假设我有两个(或更多)IEnumerable<T>
有很多元素。每一个IEnumerable
都有另一种类型T
。列表可能非常长,不应完全加载到内存中。
IEnumerable<int> ints = getManyInts();
IEnumerable<string> strings = getSomeStrings();
IEnumerable<DateTime> dates = getSomeDates();
我想要做的是遍历这些列表,并为每个步骤获取一个包含一个 int、一个字符串和一个 DateTime 的项目,直到到达最长或最短列表的末尾。两种情况都应该支持(布尔参数最长与最短)。对于较短列表中不可用的每个项目(因为已经到达末尾),我希望使用默认值。
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 直接结合收益回报的解决方案。请参阅如何在 .NET 2 中同时迭代两个 IEnumerables