我对我最近的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列表,然后根据任何找到的推荐加入专家和用户表
由于
答案 0 :(得分:1)
善意的建议:针对您希望在类模型和LINQ环境中表达的内容,而不是尝试重现SQL。如果您执行类似
的操作context.CarePlans
.Select(cp => new { Plan = cp, FirstReferral = cp.Referrals.FirstOrDefault() }
(前提是它与您的上下文匹配并忽略排序和其他联接以便清晰)
它基本上可以做你想要的,但它可以很好地转换为内联子查询,而不是外部应用。达到同样的效果。并且执行计划可能不会有太大差异。