【发布时间】:2016-10-13 13:56:20
【问题描述】:
相对较新的 linq,来自 SQL。因此,我正在尝试找出以下内容的左连接:
SELECT * from MASTER m
LEFT JOIN CHILD C
ON m.ID=C.MASTER_ID
WHERE C.MASTER_ID is null
所以,通常这会返回来自 Master 的所有没有孩子的记录。我发现了 .DefualtIfEmpty() 但这并没有消除有孩子的主记录。
我是这样开始的:
var recs=from m in MASTER
from c in child
.where (mapping=>mapping.MasterId == m.Id)
.DefaultIfEmpty()
select new { MasterId = m.Id};
但这就是我所得到的并且被卡住了。我假设 .DefaultIfEmpty() 不是我想要的。 注意:主表中有几百万行。孩子们的人数接近相同。我之所以提及,是因为拉回所有记录等效率不高。理想情况下,生成的 SQL 将看起来像我发布的 SQL。
谢谢大家。
【问题讨论】:
标签: c# .net linq linq-to-sql