C# LINQのZipメソッドで2つのシーケンスを結合する方法
C#のLINQにおけるZipメソッドは、2つのシーケンス(コレクション)の要素を1対1で対応付け、指定したラムダ式(述語)に従って1つの新しいシーケンスへ結合するためのメソッドです。数値と文字列のように異なる型のコレクションでも、柔軟にマージ処理を行えます。
まず、結合対象となる2つの配列を用意します。
int[] intArray = { 10, 20, 30, 40 };
string[] stringArray = { "Jack", "Tim", "Henry", "Tom" };
次に、Zipメソッドを使って両方の配列を結合します。
intArray.AsQueryable().Zip(stringArray, (one, two) => one + " " + two)
このコードでは、intArrayの各要素とstringArrayの各要素がインデックス順にペアとなり、ラムダ式 (one, two) => one + " " + two によって数値と文字列がスペース区切りで連結されます。
なお、Zipメソッドは2つのシーケンスの長さが異なる場合、短い方の要素数までしか結合されない点にも注意してください。
サンプルコード
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
public static void Main() {
int[] intArray = { 10, 20, 30, 40 };
string[] stringArray = { "Jack", "Tim", "Henry", "Tom" };
var mergedSeq = intArray.AsQueryable().Zip(stringArray, (one, two) => one + " " + two);
foreach (var ele in mergedSeq)
Console.WriteLine(ele);
}
}
実行結果
10 Jack 20 Tim 30 Henry 40 Tom
このように、Zipメソッドを活用すれば、複数のコレクションの要素を簡単に組み合わせた新しいシーケンスを作成できます。IDと名前の対応付けなど、実務でも幅広く活用できる便利なメソッドです。
-
【初心者向け】C#のLINQ Whereメソッドの使い方を徹底解説!条件に合う要素を抽出する方法
C# LINQのWhereメソッドとは? C#のLINQに用意されているWhereメソッドは、指定した条件(述語:Predicate)に基づいて、コレクションや配列の中から該当する要素だけを抽出(フィルタリング)するためのメソッドです。 データの一覧から特定の条件を満たす項目のみを取り出したい場面は開発現場で非常に多く、WhereメソッドはLINQの中でも特に使用頻度の高い機能といえます。 例えば、以下のように記述すると「70以上の要素」だけを取得できます。 Where((n, index) => n >= 70); このラムダ式では、各要素 n が70以上であるかどうかを判定し、
-
C# LINQ Distinct()メソッドでリストから重複要素を削除する方法
C#のLINQで重複しない要素(一意の値)だけを取得したい場合は、Distinct()メソッドを使用します。このメソッドは、シーケンス内の重複する要素を取り除き、各要素を1度だけ返してくれます。 重複要素を含むリストの準備 まずは、重複した要素を含むリストを用意しましょう。 List<int> points = new List<int> { 5, 10, 5, 20, 30, 30, 40, 50, 60, 70 }; このリストには「5」と「30」がそれぞれ2回含まれています。 Distinct()メソッドで重複を除去する 重複を除いた要素を取得するには、次のように