如何在.NET 2中同时迭代两个IEnumerables

mat*_*zek 2 .net ienumerable foreach .net-2.0

编辑:我将此分为两个问题:

  • 迭代两个以较短的列表结尾的列表
  • 迭代多个列表,直到达到最长列表的最后一个元素

假设我有两个IEnumerable,包含许多元素.每个IEnumerable都有另一种类型T.

IEnumerable<int> ints=getManyInts();
IEnumerable<string> strings=getSomeStrings();
Run Code Online (Sandbox Code Playgroud)

我想要做的是迭代两个列表,并为每个步骤获取一个包含一个int和一个字符串的项目,直到达到最短列表的末尾.

for(Item<int,string> item in Foo.Combine<int,string>(ints, strings))
{
    int i=item.Val1;
    string s=item.Val2;
}
Run Code Online (Sandbox Code Playgroud)

您还可以在.NET 4中给我一个提示如何执行此操作.

Dar*_*rov 5

提示.NET 4.0:

var result = ints.Zip(strings, (i, s) => new { Key = i, Value = s });
foreach(var item in result)
{
    int key = item.Key;
    string value = item.Value;
    // Do something with the kvp
}
Run Code Online (Sandbox Code Playgroud)