1

这是我的代码:

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

4

3 回答 3

7

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

foreach (var item in l1.Concat(l2))
{
    item = MyFunction(item);
}
于 2013-01-14T17:57:57.583 回答
4

您可以使用 Concat() 函数:

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

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

于 2013-01-14T17:59:22.970 回答
0

也许是这样的:

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

联盟删除所有重复项。Concat() 方法没有。因此,Union 可能更可取。这取决于列表的组成。

于 2013-01-14T17:59:49.110 回答