C# PROGRAM

C#でLINQを使ってみよう~結合(Join)【初心者向け】

LINQを使って2つのオブジェクトを結合する

今回は、データソースのオブジェクトを2つ用意して、LINQ を使って2つのオブジェクトを結合するやり方を解説します。
LINQ の結合に関する詳しい内容は、以下のマイクロソフト公式サイトを参照してください。

データソースの定義

今回用意するデータソースは、以下のようなイメージとなります。

項目内容
Id社員ID
EmpName社員名
DepId部署ID
データソース(社員)
項目内容
DepId部署ID
DepName部署名
データソース(部署)

それぞれのデータソースの部署IDを紐づけて、2つのオブジェクトを結合します。

データソースの作成

上記のデータソースの定義を元に、オブジェクトを作成します。

クエリ構文を使った結合

上記のオブジェクトをクエリ構文で結合する場合は、以下のように記述します。

from emp in data1
join dep in data2 on emp.DepId equals dep.DepId
select new { emp.EmpName, dep.DepName };

上記の例で使用している emp や dep の名称は、何でも構いませんが、何を表しているかが分かりやすい名称にします。
select句では、結合後の新しいオブジェクトの項目(社員名、部署名)を定義します。

メソッド構文を使った結合

メソッド構文で結合する場合は、以下のように記述します。

data1.Join(
 data2,
 emp => emp.DepId,
 dep => dep.DepId,
 (item1, item2) => new { item1.EmpName, item2.DepName }
);

Join()メソッドの引数の内容は、以下の通りです。
第2引数から第4引数は、ラムダ式で記載します。

第1引数:元のオブジェクトに結合するオブジェクト
第2引数:紐づける結合元の項目
第3引数:紐づける結合先の項目
第4引数:結合した新しいオブジェクトの項目(結合結果)

LINQでオブジェクトを結合したプログラムを作成する

これまでの内容を元に、実際に動作するプログラムを作成してみましょう。

実行結果

-C#, PROGRAM
-,