在LINQ中编写这个SQL? (外部申请)

时间:2012-03-06 23:31:32

标签: sql linq sql-server-2008

我对我最近的SQL / Linq问题表示道歉,但我需要知道这个有效的SQL查询在LINQ中会是什么样子?

select *
from CarePlan c
outer apply (select top 1 * from Referral r 
             where
    r.CarePlanId = c.CarePlanId order by r.ReferralDate desc) x  
          left outer join Specialist s on s.SpecialistId = x.SpecialistId   
          left outer join [User] u on u.UserId = s.UserId

这基本上检索了具有最新推荐(如果存在)的Careplans列表,然后根据任何找到的推荐加入专家和用户表

由于

1 个答案:

答案 0 :(得分:1)

善意的建议:针对您希望在类模型和LINQ环境中表达的内容,而不是尝试重现SQL。如果您执行类似

的操作
context.CarePlans
  .Select(cp => new { Plan = cp, FirstReferral = cp.Referrals.FirstOrDefault() }

(前提是它与您的上下文匹配并忽略排序和其他联接以便清晰)

它基本上可以做你想要的,但它可以很好地转换为内联子查询,而不是外部应用。达到同样的效果。并且执行计划可能不会有太大差异。