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

本文关键字:元素 于两个 列表 | 更新日期: 2023-09-27 17:52:54

这是我的代码:

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语句中迭代这两个列表?

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

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

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

您可以使用Concat()函数:

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

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

可以这样写:

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

联合删除所有重复项。Concat()方法不需要。所以联合利华可能更受青睐。这取决于列表的组成