[英]c# linq left join
我想執行左連接,它將像在SQL Server / MySQL中一樣工作。
例如:mysql:表a左外部JOIN tableb ON b.AId = a.bId
linq:
from b in ctx.tableb.DefaultIfEmpty()
我以為可能在條件中添加此內容:
b.Aid = a.bId
但是然后它像正常的內部聯接一樣返回我的結果。
如果嘗試不使用它,那么結果中我將從表b中獲得所有行,結果為a(重復結果)。
我希望它像常規的左聯接一樣返回表A的行:
“ LEFT JOIN關鍵字返回左表(表1)中的所有行,而匹配的行在右表(表2)中。如果不匹配,則結果為右側的NULL”
有一種查詢將在mysql中起作用的方式嗎?
如果我在做不同的事情,問題就解決了,但我不認為這是方法。
謝謝。
從如何使用LINQ執行左外連接,您可以使查詢看起來像:
from b in ctx.tableb
join a in ctx.tablea on b equals tablea.b into ba
from c in ba.DefaultIfEmpty()
select { [ResultFromTableb] = b.[ColumnNameInTableb],..., [ResultFromTablea] = ba = null ? string.Empty : a.[ColumnNameInTablea] }
請注意,如果您確實使用select like
select ba;
,然后引用選擇行中的一列,則對於ba
中任何為null的行,您都將獲得NullReferenceException
(並且,即使其中只有一個null列,您也會獲得null行)。
從tableA中的a加入tableB中的b等於b.Owner從gj中的c進入gj。DefaultIfEmpty()選擇new {a.FirstName,PetName =(c == null?String.Empty:c.Name)};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.