4
Employee
id, name, datejoin, deptID

和另一张桌子

Marketing 
id, name, deptID

我要做的是从 Marketing 中的 Employee 表中搜索 deptID 以查看它是否存在,如果不存在则想将 Employee 表中的 name 和 deptID 添加到 Marketing 表中。基本上我相信它是左外连接。

我想做的是使用 lambda 表达式和 EF 我是这个领域的新手,所以想知道如何实现这一点。我已经创建了需要弄清楚 lambda 表达式的实体

tTlEntities sde = new tTlEntities();
sde.t_Marketing.Where(x=>x.deptID == t_Employee.deptID).

这就是我走了多远,我知道需要一些外部连接。请帮助

4

3 回答 3

7

它可以通过员工与营销的左外连接和检查员工的空营销结果来完成,或者您可以使用在 LINQ to Entities 中为:

tTlEntities sde = new tTlEntities();
var employeeQuery = sde.t_Employee.Where(
                     e=> !sde.t_Marketing.Any(m => m.deptID == e.deptID));
于 2013-05-23T11:29:00.147 回答
4

如果你navigation property有一个nullable foreign key id,EF 会自动创建一个left outer join。如果它不可为空,则结果将是inner join. 没有必要显式地编写连接。只需Include在具有nullable foreign key id.

于 2013-11-12T10:42:56.287 回答
3

你需要DefaultIfEmpty(). 此外,该类型必须是匿名的,而不是雇员,因为它需要比雇员更多的属性。

var leftList = (from emp in Employees
                         join d in Departments
                         on emp.deptID equals d.Id into output
                         from j in output.DefaultIfEmpty()
                         select new {id = emp.Id, name = emp.name, datejoin = emp.datejoin, deptname = d.name });
于 2013-05-23T06:33:47.750 回答