次のような左外部結合があると仮定します。
from f in Foo
join b in Bar on f.Foo_Id equals b.Foo_Id into g
from result in g.DefaultIfEmpty()
select new { Foo = f, Bar = result }
同じタスクを拡張メソッドで表現するにはどうすればよいでしょうか? 例:
Foo.GroupJoin(Bar, f => f.Foo_Id, b => b.Foo_Id, (f,b) => ???)
.Select(???)
ベストアンサー1
ラムダ表記でテーブルBar
とテーブルの (左外部) 結合を行う場合:Foo
Foo.Foo_Id = Bar.Foo_Id
var qry = Foo.GroupJoin(
Bar,
foo => foo.Foo_Id,
bar => bar.Foo_Id,
(x,y) => new { Foo = x, Bars = y })
.SelectMany(
x => x.Bars.DefaultIfEmpty(),
(x,y) => new { Foo=x.Foo, Bar=y});