我有类似 Employee、Manager、Branch、Division、Employee_history 的表
让我们说两个表 Employee 和 Manager 共享某些列,例如employee_id、name、branch_id
分支表有 branch_id
分区表有 division_id
Employee_history 有 emp_hist_id。所有这些表都是一对多的关系
我要转换为 LINQ 的 SQL 是
select b.branch_id, e.employee_id
from division d
join branch b on d.division_id = b.division_id
join
( select employee_id, branch_id
from EMPLOYEE
UNION
select employee_id, branch_id
from MANAGER
) e
on e.branch_id = b.branch_id
join EMPLOYEE_HISTORY eh on eh.employee_id = e.employee_id
我如何做一个 UNION 然后加入。我已经放了一个简化版本的 SQL,而不是我所拥有的。在我的实际SQL中,Branch表之前有两三个join,union之后有一个join
我的 LINQ 看起来像(类似于实际代码)
from division in divisions
join brnch in Branch on division.division_id equals brnch.division_id
join empl in (
from emplyee in Employee select new { EmployeeId = emplyee.employee_id}, BrnachId = branch_id).Union(
from mngr in Manager select new { EmployeeId = mngr.employee_id, BrnachId = branch_id)
on brnch.branch_id equals empl.BranchId
join emplhistory in EMPLOYEE_HISTORY on empl.EmployeeId equals emplhistory.employee_id
where division.division_type_id = 10
select new
{
//...
}
我收到错误消息:
join 子句中的表达式之一的类型不正确。对“加入”的调用中的类型推断失败。
在以 'join empl in (' 开头的行中