2 回答

TA貢獻1803條經(jīng)驗 獲得超6個贊
您可以兩次使用 LINQ:
Context.Foos
.Join(Context.Bars, f => f.FooVal, b => b.BarValCol1, (f, b) => new { f, b })
.Select(bf => new { fId = bf.f.Id, bId = bf.b.Id }).ToList().AddRange(
Context.Foos
.Join(Context.Bars, f => f.FooVal, b => b.BarValCol2, (f, b) => new { f, b })
.Select(bf => new { fId = bf.f.Id, bId = bf.b.Id })
).Distinct();

TA貢獻1810條經(jīng)驗 獲得超4個贊
INNER JOIN是一種更易讀的語法,但它可以在純 SQL 中轉(zhuǎn)換為用WHERE子句過濾的表的笛卡爾積。
所以我們可以簡單地使用一個WHERE子句并從中構(gòu)建 linq:
from x in Foo
from y in Bar
.Where(y => y.field1 == x.field1 || y.field2 == x.field2)
Ps:INNER JOIN和WHERE在 SQL 中不是同時計算的,所以它們不等價。ON條件過濾器INNER JOIN然后WHERE應用。但即使它們當然也會有相同的結(jié)果但不相同的執(zhí)行計劃取決于數(shù)據(jù)庫
- 2 回答
- 0 關(guān)注
- 201 瀏覽
添加回答
舉報