ホームページ > バックエンド開発 > C++ > C# で 2 つのリストを同時に反復するにはどうすればよいですか?

C# で 2 つのリストを同時に反復するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-31 13:13:17
オリジナル
1000 人が閲覧しました

How Can I Iterate Through Two Lists Simultaneously in C#?

C# の ForEach を使用して 2 つのリストまたは配列を同時に反復する

C# では、同じものを使用して複数のリストまたは配列を同時に反復処理することができます。 foreach ステートメント。これにより、複数の反復的なアプローチの必要性がなくなり、プロセスが合理化されます。

Zip メソッドの使用

.NET Framework 4.0 以降を使用している場合は、次のことができます。組み込みの Zip メソッドを利用します。このメソッドは、指定された 2 つのシーケンスの要素をペアにして、一連のペアを作成します。

たとえば、2 つのリスト listA と listB がある場合、次のように Zip メソッドを利用できます:

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 });
ログイン後にコピー

このコードは、一連の匿名オブジェクトを作成します。各オブジェクトには Number プロパティと Word プロパティが含まれます。次に、foreach ステートメントを使用して、このシーケンスを反復処理できます。

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);
}
ログイン後にコピー

その他の反復オプション

Zip メソッドは 2 つのシーケンスを同時に反復する簡潔な方法を提供しますが、他のオプションもあります。 1 つの方法は、二重 for ループを使用することです:

for(int i = 0; i < listA.Count; i++)
    listB[i] = listA[i];
ログイン後にコピー

もう 1 つの方法は、Parallel.ForEach を使用することです:

Parallel.ForEach(numbers, number =>
{
    int index = Array.IndexOf(numbers, number);
    listB[index] = words[index];
});
ログイン後にコピー

最適な反復アプローチの選択

最適な反復アプローチは、特定の要件と使用している .NET のバージョンによって異なります。 Zip メソッドは効率的で多用途ですが、他のアプローチはレガシー シナリオやインデックスに基づいて値を割り当てる場合により適している可能性があります。

以上がC# で 2 つのリストを同時に反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート