LINQで複数テーブルをJoinする場合は、メソッド構文ではなくクエリ構文で記述した方が可読性は高い
複数エンティティをメソッド構文で内部結合すると可読性が低い。
複数エンティティ結合する必要がある場合は、クエリ構文で記述した方が可読性は上がる。
メソッド構文とクエリ構文で比較
4テーブル結合した場合のメソッド構文とクエリ構文の例
メソッド構文の例
var query =
db.Parent
.Join(db.ChildA, x => x.id, y => y.id, (p, a) => new { p, a })
.Join(db.ChildB, x => x.p.id, y => y.id, (grp, b) => new { grp, b })
.Join(db.ChildC, x => x.grp.p.id, y => y.id, (grp, c) => new { grp, c })
.Join(db.ChildD, x => x.grp.grp.p.id, y => y.id, (grp, d) => new { grp, d })
.Select(x => new { x.grp.grp.grp.p, x.grp.grp.grp.a, x.grp.grp.b, x.grp.c, x.d });
クエリ構文の例
var query =
from p in db.Parent
join a in db.ChildA on p.id equals a.id
join b in db.ChildB on p.id equals b.id
join c in db.ChildC on p.id equals c.id
join d in db.ChildD on p.id equals d.id
select new {p,a,b,c,d};