[英]EF query with conditions from multiple tables
我有一個名為“雇員”的表。 該表中的employeeId可以在另一個名為“ Tasks”的表(多對多聯接)中。 “任務”表中的另一個字段是鏈接到“ TaskDetails”表的taskId。 該表包括諸如budgetHours之類的詳細信息。
使用EF4,如何編寫WHERE語句,以便將退貨分配給budgetHours> 120小時的任務?
下面的WHERE語句限制了Employees表中的行,但是現在我需要在TaskDetails表上添加條件。
var assocOrg = Employees.Where(x => x.EmployeeTypeID == 2 && x.DepartmentName == "ABC").Select (x => x.EmployeeID);
謝謝!
如果員工具有名為“任務”的導航屬性,請嘗試以下操作:
var assocOrg = Employees.Where(x => x.EmployeeTypeID == 2 &&
x.DepartmentName == "ABC" &&
x.Tasks.Any(t => t.BudgetHours > 120))
.Select (x => x.EmployeeID);
如果您的表格結構如下所示,
TableName Employee Task TaskDetails
ReferenceKeys EmpID EmpdID/TaskID TaskID/BudgetHours
然后使用
Employee.Where(x => x.Task.EmpID == x.EmpID && x.Task.TaskDetails.TaskID == x.Task.TaskID && x.Task.TaskDetails.BudgetHours > 120).select(x => x.EmpID)
假設您在Employee
實體上具有Tasks
導航屬性,這應該很簡單:
var assocOrg = Employees.Where(x => x.Tasks.Any(t => t.BudgetHours > 120) && x.DepartmentName == "ABC").Select (x => x.EmployeeID);
當然,這需要在此時解析Tasks屬性,或者通過延遲加載或使用.Include()
顯式解析。
(對@adrift表示感謝,以使Tasks.Any()正確...糟糕。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.