所以我有一个 EmployeeScheduleRoles 表,包含 ID、EmployeeID、ScheduleID、RoleID
请注意,RoleID == 1 表示您是该计划的管理员(经理)。我将经理的 ID 硬编码为 15921
现在,我抓住经理有权处理的时间表
var schedList1 = (
from esr in dbcontext.EmployeeScheduleRoles
where esr.EmployeeID == 15921 && esr.RoleID == 1
select esr);
从这里,我抓住这些时间表内的所有员工
var EmployeeScheduleRoles =
(from esr in dbcontext.EmployeeScheduleRoles
join s in schedList1 on esr.ScheduleID equals s.ScheduleID
select esr)
我希望我可以推迟第一个并让它与第二个一起执行。它这样做,但它作为子查询“单独”运行。
我试过做一些内部连接来一次完成这一切,但我迷路了。
期望的输出:
EmployeeID ScheduleID RoleID
15921 1241 1
15927 1241 2
15948 1241 2
15949 1241 2
15950 1241 2
15951 1241 2
15952 1241 2
15953 1241 2
15954 1241 2
15955 1241 2
15956 1241 2
15957 1241 2
15958 1241 2
15959 1241 2
15960 1241 2
15961 1241 2
15962 1241 2
17822 1241 2
18026 1241 2
18027 1241 2
18028 1241 2
在这种特殊情况下,请注意此帐户只有一个时间表(在经理的管辖范围内)
编辑:我想完全摆脱“schedList1”并将其替换为连接。
以下是功能性的,但如果可能的话,我想强制它在一个查询中发生,而不是在主查询和子查询中发生。
from esr in dbcontext.EmployeeScheduleRoles
join s in
(from esr in dbcontext.EmployeeScheduleRoles
where esr.EmployeeID == 15921 && esr.RoleID == 1
select esr.ScheduleID)
on esr.ScheduleID equals s
select esr)