如何在EntityFramework中进行正确连接并仅返回空值?

时间:2016-07-15 10:03:20

标签: c# entity-framework linq

我有两个表,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()的各种不同用法,但它们最终都会返回错误的内容,或者根本不返回任何内容。

1 个答案:

答案 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;