C# で 1 つの ForEach ステートメントを使用して 2 つのリストまたは配列を反復処理する 質問する

C# で 1 つの ForEach ステートメントを使用して 2 つのリストまたは配列を反復処理する 質問する

これは一般的な知識として:

たとえば2つあるとすると、リスト、両方を同じ foreach ループで反復処理したいのですが、それは可能ですか?

編集

明確にするために、私はこれをやりたかったのです:

List<String> listA = new List<string> { "string", "string" };
List<String> listB = new List<string> { "string", "string" };

for(int i = 0; i < listA.Count; i++)
    listB[i] = listA[i];

しかし、foreach を使用すると =)

ベストアンサー1

これは、ジップ操作であり、.NET 4 以降でサポートされています。

そうすれば、次のような書き方ができるようになります。

var numbers = new [] { 1, 2, 3, 4 };
var words = new [] { "one", "two", "three", "four" };

var numbersAndWords = numbers.Zip(words, (n, w) => new { Number = n, Word = w });
foreach(var nw in numbersAndWords)
{
    Console.WriteLine(nw.Number + nw.Word);
}

名前付きフィールドを持つ匿名型の代わりとして、タプルとその静的Tuple.Createヘルパーを使用して中括弧を節約することもできます。

foreach (var nw in numbers.Zip(words, Tuple.Create)) 
{
    Console.WriteLine(nw.Item1 + nw.Item2);
}

おすすめ記事