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);
}

1つの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()メソッドはそうではありません。したがって、ユニオンの方が望ましいかもしれません。リストの構成によって異なります。

于 2013-01-14T17:59:49.110 に答える