【问题标题】: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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 2016-01-23
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多