我有两个表,NAttrValues和NAttrTitles。 NAttrTitles有一个ID,在NAttrValues表中由'TitleID'列引用。我正在尝试使用EntityFramework中的LINQ返回NAttrTitles中没有任何关联NAttrValues的元素。
此SQL查询完全返回我想要的内容
SELECT * FROM NAttrValues nav RIGHT JOIN NAttrTitles nat ON nav.TitleID = nat.ID WHERE nav.TitleID IS NULL
我如何在EntityFramework中写这个?我已经尝试过.DefaultIfEmpty()的各种不同用法,但它们最终都会返回错误的内容,或者根本不返回任何内容。
答案 0 :(得分:2)
右外连接与Left Outer Join相同,左右两侧交换。因此LINQ To Entities等同于您的SQL查询:
var query =
from nat in db.NAttrTitles
join nav in db.NAttrValues on nat.ID equals nav.TitleID into nat_nav
from nav in nat_nav.DefaultIfEmpty()
where nav == null
select nat;