对于两个列表中的每个元素

时间:2013-01-14 17:57:31

标签: c# .net arrays list foreach

这是我的代码:

List<string> l1 = new List<string> { "a", "b", "c" };
List<string> l2 = new List<string> { "x", "y", "z" };
foreach (var item in l1)
{
    item = MyFunction(item);
}
foreach (var item in l1)
{
    item = MyFunction(item);
}

有没有办法在单个foreach语句中迭代这两个列表?

3 个答案:

答案 0 :(得分:7)

假设List个对象的类型相同,您可以使用Concat

foreach (var item in l1.Concat(l2))
{
    item = MyFunction(item);
}

答案 1 :(得分:4)

您可以使用Concat()函数:

foreach(var item in l1.Concat(l2))
   item = MyFunction(item);

请注意,重新分配基于Enumerable的循环的计数器变量可能会导致与更改底层IEnumerable相关的异常。

答案 2 :(得分:0)

也许是这样的:

var mergedList = 11.Union(l2).ToList();
foreach (var item in mergedList)
{
    item = MyFunction(item);
}

联盟删除任何重复项。 Concat()方法没有。因此,Union可能更受欢迎。这取决于名单的构成。