join句による連結
プログラミングC# 第6版 8.3.11
別のデータ同士を連結させることができす。join句はConcatのように全てを連結するのではなく、条件で指定したものだけを連結することができます。
using System; using System.Linq; class Foo { public int id; public string name; } class Bar { public int id; public string name; } class Program { static void Main() { Foo[] fooList = new Foo[] { new Foo() { id = 1 , name = "fooA" }, new Foo() { id = 2 , name = "fooB" }, new Foo() { id = 3 , name = "fooC" }, }; Bar[] barList = new Bar[] { new Bar() { id = 2 , name = "barA" }, new Bar() { id = 3 , name = "barB" }, new Bar() { id = 4 , name = "barC" }, }; // id同士が一致するものを連結してnameだけを取ってくる var ret = from foo in fooList join bar in barList on foo.id equals bar.id select new { fooName = foo.name, barName = bar.name }; foreach(var item in ret) { Console.WriteLine("fooName={0} barName={1}",item.fooName,item.barName); } } }
$ main fooName=fooB barName=barA fooName=fooC barName=barB
うまくいってますね。この機能はデータベースを対象としたLINQの場合に使用することが多いそうです。