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).
这就是我走了多远,我知道需要一些外部连接。帮助请
答案 0 :(得分:7)
可以通过员工对营销的左外部联接和对员工的空营销结果的检查来完成,或者您可以使用不存在的LINQ to Entities:
tTlEntities sde = new tTlEntities();
var employeeQuery = sde.t_Employee.Where(
e=> !sde.t_Marketing.Any(m => m.deptID == e.deptID));
答案 1 :(得分:4)
如果您的navigation property
有nullable foreign key id
,则EF会自动创建left outer join
。如果它不可为空,则结果为inner join
。没有必要明确地编写连接。只需在导航属性上使用Include
扩展方法,该属性具有nullable foreign key id
。
答案 2 :(得分: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 });