EF Linq中的左連接Left Join查詢


linq中的join是inner join內連接,就是當兩個表中有一個表對應的數據沒有的時候那個關聯就不成立。

比如表A B的數據如下

from a in A
join b in B on a.BId equals b.Id
select new {a.Id, b.Id}

的結果是

{1,1}

{2,2}

{4,4}

因為3在B表中不存在,所以連接失敗,不返回,但是當我們需要返回一個{3, null}的時候怎么辦呢,這就是左連接,反之,如果是{null,3}

則是右連接。

from a in A
join b in B on a.BId equals a.Id

into re
from r in re.DefaultIfEmpty()

select new {a.Id, r.Id}//這里B表的數據已經放進re這個IEnumerable中了,所以select的時候從re集合去取

這樣即是左連接,返回結果是

{1,1}

{2,2}

{3,null}

{4,4}

可以看到和直接內連接的join差距在多了into,把可能為空的那個集合(表)放到一個集合,然后再對接進行DefaultIfEmpty(),再從這個結果中去取

重點就是into到集合,再DefaultIfEmpty()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM