使用foreach循环迭代两个列表

Rof*_*ion 16 .net c#

我有两个清单

List<object> a = new List<object>();
List<object> b = new List<object>();
Run Code Online (Sandbox Code Playgroud)

现在我想迭代两个列表的元素.我可以通过为每个列表编写一个foreach循环来做到这一点.但也可以这样做吗?

foreach(object o in a, b) {
 o.DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

如果这样的话可能会很好:

foreach (object o in a && b) {
   o.DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

Ita*_*aro 24

foreach(object o in a.Concat(b)) {
 o.DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用的是List <T>和.Net 3.5或更高版本,则可以使用`Concat`方法.只需添加`using System.Linq`即可 (3认同)

Mar*_*ers 13

如果你想单独遍历它们,那么你可以Enumerable.Concat像已经指出的那样使用它.

如果你想同时迭代两个列表,从循环中的每个列表访问一个元素,那么在.NET 4.0中有一个方法Enumerable.Zip可以使用.

int[] numbers = { 1, 2, 3, 4 };
string[] words = { "one", "two", "three" };

var numbersAndWords = numbers.Zip(words, (first, second) => first + " " + second);

foreach (var item in numbersAndWords)
{
    Console.WriteLine(item);
}
Run Code Online (Sandbox Code Playgroud)

结果:

1 one
2 two
3 three


And*_*rey 6

foreach(object o in a.Concat(b)) {
 o.DoSomething();
}
Run Code Online (Sandbox Code Playgroud)