簡體   English   中英

C#linq左聯接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM