Linq to SQL 左外连接不是

Posted

技术标签:

【中文标题】Linq to SQL 左外连接不是【英文标题】:Linq to SQL Left Outer Join Not 【发布时间】:2013-09-09 12:43:06 【问题描述】:

我有两个表“Employees”和“EmployeesCompanies”,Employees 包含所有员工的列表,employeescompanies 包含与员工关联的所有公司的列表:

表 1(员工) 员工ID 1 2 3 表 2(员工公司) 员工ID 1 2

我想回来 3 这是EmployeesCompanies的缺失记录,这是我正在使用的linq代码:

var queryOrphanedEmployees = (from a in db.Employees
join b in db.EmployeesCompanies
on a.EmployeeID equals b.EmployeeID
into outer
from c in outer.DefaultIfEmpty()
select new  a.EmployeeID).ToList();

但是这会返回:

1 2

这与我想要的完全相反。

【问题讨论】:

【参考方案1】:

如果你正确设置了外键,你应该可以做这样的事情

from e in Employees
where !e.EmployeesCompanies.Any()
select e

【讨论】:

以上是关于Linq to SQL 左外连接不是的主要内容,如果未能解决你的问题,请参考以下文章

左外连接和多重计数 SQL to LINQ

LINQ to SQL 左外连接

Linq To Sql 左外连接 - 过滤空结果

使用 Linq to Sql 的左外连接结果问题

LINQ to SQL 执行联合和左外连接

LINQ to Sql 左外连接与 Group By 和 Have 子句