这只是为了一般知识:
如果我有两个,让我们说,List,我想用相同的foreach循环迭代,我们能做到吗?
编辑
只是为了澄清,我想这样做:
List<String> listA = new List<string> { "string", "string" };
List<String> listB = new List<string> { "string", "string" };
for(int i = 0; i < listA.Count; i++)
listB[i] = listA[i];
Run Code Online (Sandbox Code Playgroud)
但是有一个foreach =)
假设我有两个(或更多)IEnumerable<T>
元素.每个IEnumerable
都有另一种类型T
.列表可能非常长,不应完全加载到内存中.
IEnumerable<int> ints = getManyInts();
IEnumerable<string> strings = getSomeStrings();
IEnumerable<DateTime> dates = getSomeDates();
Run Code Online (Sandbox Code Playgroud)
我想要做的是迭代这些列表,并获得一个包含一个int,一个字符串和每个步骤一个DateTime的项目,直到达到最长或最短列表的末尾.两种情况都应该得到支持(bool param最长与最短等).对于较短列表中不可用的每个项目(因为已经达到结束),我希望默认值.
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;
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用延迟执行linq执行此操作?我知道使用IEnumerator直接结合yield return的解决方案.请参阅如何在.NET 2中同时迭代两个IEnumerables