【问题标题】:How can I convert this SQL to LINQ? (Inner Joins and subqueries involved) [closed]如何将此 SQL 转换为 LINQ? (涉及内部联接和子查询)[关闭]
【发布时间】:2013-06-27 19:50:23
【问题描述】:
select * from EmployeeScheduleRoles esr
inner join
(
select esr.ScheduleID from Schedules sch
inner join EmployeeScheduleRoles esr on esr.ScheduleID = sch.ID
inner join Employees emp on emp.ID = esr.EmployeeID
where emp.ID = 15921
) subqry on subqry.ScheduleID = esr.ScheduleID
限制:不允许 'Contains()'。
【问题讨论】:
标签:
c#
sql
sql-server
tsql
【解决方案1】:
此 LINQ 查询等同于您的 SQL 查询(对我来说似乎不是很优化)
from esr in db.EmployeeScheduleRoles
join subqry in
(from sch in db.Schedules
join esr2 in db.EmployeeScheduleRoles on sch.ID equals esr2.ScheduleID
join emp in db.Employees on esr2.EmployeeID equals emp.ID
where emp.ID == 15921
select esr2.ScheduleID)
on esr.ScheduleID equals subqry
select esr
【解决方案2】:
var yours = (from esr in EmployeeScheduleRoles
join sch in Schedules on esr.ScheduleID equals sch.ID
join emp in Employees on emp.ID equals esr.EmployeeID
where emp.ID == 15921
select esr).toList()
顺便说一句,你的sql子查询是多余的,你可以select esr.* from Schedules sch