簡體   English   中英

使用實體框架和Lambda表達式進行左外連接

[英]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 idnullable foreign key id ,則EF將自動創建left outer join 如果它不可為空,則結果將是inner join 沒有必要明確地編寫連接。 只需在導航屬性上使用Include擴展方法,該屬性具有nullable foreign key idnullable 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM