如何在实体框架中执行正确的联接并仅返回空值

本文关键字:空值 返回 实体 框架 执行 | 更新日期: 2023-09-27 17:57:15

我有两个表,NAttrValues和NAttrTitles。NAttrTitle 有一个 ID,在 NAttrValues 表中由"TitleID"列引用。我正在尝试使用 EntityFramework 中的 LINQ 返回 NAttrTitle 中没有任何关联 NAttrValues 的元素。

此 SQL 查询返回的正是我想要的

SELECT * FROM NAttrValues nav RIGHT JOIN NAttrTitles nat ON nav.TitleID = nat.ID WHERE nav.TitleID IS NULL

如何在EntityFramework中编写它?我已经尝试了各种不同的用法。DefaultIfEmpty() 但它们最终都返回了错误的东西,或者什么都没有。

如何在实体框架中执行正确的联接并仅返回空值

右外连接与左外连接相同,只是左右两侧交换。因此,与 SQL 查询等效的 LINQ To 实体是:

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;