Написание этого SQL в LINQ? (внешнее применение) - PullRequest
1 голос
/ 07 марта 2012

Приношу свои извинения за мои недавние вопросы по 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

Это в основном возвращает список планов Careplan с самым новым рефералом (если он существует), то присоединяется к таблице «Специалист» и «Пользователь» на основе найденных рефералов

Спасибо

1 Ответ

1 голос
/ 07 марта 2012

Добрый совет: нацеливайтесь на то, что вы хотите выразить в среде вашей модели классов и LINQ, вместо того, чтобы пытаться воспроизводить SQL.Если вы делаете что-то вроде

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

(при условии, что это соответствует вашему контексту и игнорирует упорядочение и другие объединения для ясности)

Это в основном будет делать то, что вы хотите, но это может очень хорошо перевестина встроенный подзапрос, а не НАРУЖНОЕ ПРИМЕНЕНИЕ.К тому же эффекту.И план выполнения, вероятно, не будет сильно отличаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...