title: How can I iterate over several IEnumerables simultaneously
body: <p>Assume I have two (or more) <code>IEnumerable&lt;T&gt;</code> with many elements. Every <code>IEnumerable</code> has another type <code>T</code>. The lists can be extreme long and should not be loaded to memory completetly.</p>
  
  <pre><code>IEnumerable&lt;int&gt; ints = getManyInts();
  IEnumerable&lt;string&gt; strings = getSomeStrings();
  IEnumerable&lt;DateTime&gt; dates = getSomeDates();
  </code></pre>
  
  <p>What I want to do is to iterate over these lists, and get an item containing one int, one string and one DateTime for each step, until the end of the longest or the shortest list has been reached. Both cases should be supported (bool param longest vs. shortest or so). For every item unavailable in the shorter lists (because the end has already been reached) I'd expect default values.</p>
  
  <pre><code>for(Tuple&lt;int,string,DateTime&gt; item in 
      Foo.Combine&lt;int,string,DateTime&gt;(ints, strings, dates))
  {
      int i=item.Item1;
      string s=item.Item2;
      DateTime d=item.Item3;
  }
  </code></pre>
  
  <p>Is it possible to do this with linq using deferred execution?
  I know the solution using IEnumerators directly combined with yield return.
  See <a href="https://stackoverflow.com/questions/4888229/">How can I iterate over two IEnumerables simultaneously in .NET 2</a></p>