foreachに変数が2つ書けない件

C#の話ね。foreachにループ変数を2つ書くのでも、2つのIEnumerable<>の要素を同時にかつ順番に1つずつペアで取り出すんでもどっちでも良いんだけど、どっちも出来ない感じ。どうして?2つの配列なりリストなりを順番に1つずつ取ってきて2つをペアとして処理したいなんてのは簡単にできるよね。IEnumerable<>だと、そもそも1つずつ順番に取ってくるというのができそうもない気がする。順番じゃなくてもいいけど、例えば5番目の要素を取り出す、ってどうやるの?Firstで最初を取り出して、それを捨てて、またFirstで2番めを取り出して、ってやるの?lispのcarとかcdrみたいね。懐かしい。foreachにIEnumerable<>を渡せば1つずつ順番に取ってこれるけど、これだと2つのIEnumerable<>を同時に1組ずつ、っていうのができそうもない気がする、っていうのが本日のお題。
なお、IEnumerable<>には「順番」という概念はそもそも存在しない、という主張は通らないよ。なぜならOrderBy()というメソッドが備わっている。つまり順番に並べることができる。にも関わらず順番に取り出すことが、または何番目かを指定して取り出すことが出来ないっておかしいよね?
仕方がないのでIEnumerableをToArrayで配列にして、forループ使ってiで回して、昔ながらの(?)コーディングって言う感じでカタをつけ、ようやく思惑通りに動いてくれた。疲れた。
そもそもTupleを使って2つ(以上)のIEnumerableを1つのIEnumerableにしちゃえば出来るけどね。気分的にちょっと違うんだよなぁ…。誰かいいアイデアがあったら教えて。