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

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

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

目次

受講者数No.1!初心者からプロへ導く信頼のスクール

    短期間で習得可能!未経験から実践力を磨く充実のプログラム

    今なら無料相談でAmazonギフトカードがもらえる!

    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をコピーしました!
    目次