[英]How can I implement a LEFT OUTER JOIN in LINQ using lambda syntax on Entity Framework Core 2.0?
[英]Left Outer Join using Entity Framework and Lambda Expressions
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).
這就是我走了多遠,我知道需要一些外部連接。 請幫助
可以通過員工對營銷的左外連接和對員工的空營銷結果的檢查來完成,或者您可以使用LINQ to Entities中不存在的內容:
tTlEntities sde = new tTlEntities();
var employeeQuery = sde.t_Employee.Where(
e=> !sde.t_Marketing.Any(m => m.deptID == e.deptID));
如果您的navigation property
具有nullable foreign key id
為nullable foreign key id
,則EF將自動創建left outer join
。 如果它不可為空,則結果將是inner join
。 沒有必要明確地編寫連接。 只需在導航屬性上使用Include
擴展方法,該屬性具有nullable foreign key id
為nullable foreign key id
。
你需要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 });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.