IEnumerable<T>
多くの要素を持つ2つ(またはそれ以上)があると仮定します。すべてIEnumerable
に別のタイプがありT
ます。リストは非常に長くなる可能性があるため、メモリに完全にロードしないでください。
IEnumerable<int> ints = getManyInts();
IEnumerable<string> strings = getSomeStrings();
IEnumerable<DateTime> dates = getSomeDates();
私がやりたいのは、これらのリストを繰り返し処理し、最長または最短のリストの最後に到達するまで、ステップごとに1つのint、1つの文字列、および1つのDateTimeを含むアイテムを取得することです。両方のケースをサポートする必要があります(bool param longest vs. shortestなど)。短いリストで利用できないすべてのアイテムについて(すでに終わりに達しているため)、デフォルト値を期待します。
for(Tuple<int,string,DateTime> item in
Foo.Combine<int,string,DateTime>(ints, strings, dates))
{
int i=item.Item1;
string s=item.Item2;
DateTime d=item.Item3;
}
遅延実行を使用してlinqでこれを行うことは可能ですか?IEnumeratorsをyieldreturnと直接組み合わせて使用するソリューションを知っています。.NET2で2つのIEnumerableを同時に反復処理する方法を参照してください。