一尘不染

使用C#中的一个ForEach语句迭代两个列表或数组

c#

这只是为了常识:

如果我有两个,比如说 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];

但是用foreach =)


阅读 320

收藏
2020-05-19

共1个答案

一尘不染

这被称为Zip操作,并且在.NET 4中受支持。

这样,您将能够编写如下内容:

var numbers = new [] { 1, 2, 3, 4 };
var words = new [] { "one", "two", "three", "four" };

var numbersAndWords = numbers.Zip(words, (n, w) => new { Number = n, Word = w });
foreach(var nw in numbersAndWords)
{
    Console.WriteLine(nw.Number + nw.Word);
}

作为使用命名字段的匿名类型的替代方法,您还可以使用元组及其静态元组来节省花括号。

foreach (var nw in numbers.Zip(words, Tuple.Create)) 
{
    Console.WriteLine(nw.Item1 + nw.Item2);
}
2020-05-19