LINQのZipで複数のコレクションを合体[C#/VB]

複数のコレクションをforeachで同時に扱いたいけどいい方法はないかな

LINQのZipメソッドを利用することで、複数のコレクションを合体させて一度に処理することができます。

目次

Zipで合体させる

 Zipメソッドを利用してコレクションを合体させるというのは、.netではあまり一般的ではないかもしれませんが、Pythonなんかではよく利用されている手法なので、.netでも利用したいという方は増えて来ているのではないかなと思います。

 .netでもZipメソッドを利用することで複数コレクションを簡単に合体させて扱うことができます。

以下が利用例になります。

        private void button1_Click(object sender, EventArgs e)
        {
            var name = new string[] { "田中", "佐藤", "森田" };
            var score = new int[] { 30, 40, 50 };

            //LINQのZIPでマージする
            var results = name.Zip(score, (n, s) => new { Name = n, Score = s });

            foreach (var X in results)
            {
                MessageBox.Show("Name:" +  X.Name + "| 点数:" + X.Score);
            }

        }
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim name = New String() {"田中", "佐藤", "森田"}
        Dim score = New Integer() {30, 40, 50}

        'LINQのZIPでマージする
        Dim results = name.Zip(score, Function(n, s) New With {.Name = n, .Score = s})

        For Each X In results
            MsgBox("Name:" & X.Name & "| 点数:" & X.Score)
        Next

    End Sub
CHECK

複数のコレクションを合体させたい場合は、1コレクションごとにZipメソッドを繋げる(Item.Zip(省略).Zip(省略))ことでいくつでも合体させることができます。 

リスキリングでキャリアアップしてみませんか?

リスキリング(学び直し)は、経済産業省が推奨しており、

今だけ、最大70%のキャッシュバックを受けることができます。

リスキリング 給付金が出るスクール紹介

最大70%の給付金が出るおすすめのプログラミングスクール!

国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!

興味のある方はすぐに確認しましょう。

Zipメソッドの定義

Zipメソッドは公式で以下のように紹介されています。

public static System.Collections.Generic.IEnumerable<TResult> Zip<TFirst,TSecond,TResult> (this System.Collections.Generic.IEnumerable<TFirst> first, System.Collections.Generic.IEnumerable<TSecond> second, Func<TFirst,TSecond,TResult> resultSelector);

2 つのシーケンスの対応する要素に対して、1 つの指定した関数を適用し、結果として 1 つのシーケンスを生成します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次