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の場合に使用することが多いそうです。