这是我的代码:
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语句中迭代这两个列表?
答案 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可能更受欢迎。这取决于名单的构成。