2015-09-16 3 views
-1

Я пытаюсь написать свой первый запрос в LINQ Это мой SQL запросКак использовать MAX в подзапроса в LINQ

SELECT P.id,PS.Id,P.CPersonName 
,PS.StartDate FROM Provider P 
LEFT OUTER JOIN ProviderSubscription PS ON 
P.id=PS.providerID 
AND PS.Id=(SELECT max(id)from ProviderSubscription where 
providerSubscription.ProviderId=Provider.id) 

И до сих пор я написал эту LINQ.

var query = (from p in db.Providers 
        join ps in db.ProviderSubscriptions on p.Id 
        equals ps.ProviderId 
        select new ViewModel 
        { 
         providerid = p.Id, 
         providername = p.ProviderName, 
         subscriptiondate = ps.ExpiryDate, 
         }).ToList(); 

Я не могу добавить эту деталь в свой LINQ.

AND PS.Id=(SELECT max(id)from ProviderSubscription where 
providerSubscription.ProviderId=Provider.id) 

ответ

0

Я не думаю, что вам нужно подзапрос, когда вы делаете объединение с теми же таблицами и с теми же условиями, то нет никакой необходимости, чтобы снова написать внутренний запрос с теми же таблицами. Ниже запрос должен возвращать тот же результат:

var query = (from p in db.Providers 
      join ps in db.ProviderSubscriptions on p.Id equals ps.ProviderId 
      where ps.Contains(ps.Max(u=>u.id)) 
      select new ViewModel 
      { 
       providerid = p.Id, 
       providername = p.ProviderName, 
       subscriptiondate = ps.ExpiryDate, 
       }).ToList(); 
+0

получение ошибки «ProviderSubscription» не содержит определения для «содержит». любая идея для этого. спасибо – SKashif

+0

хорошо, попробуйте это: точные LINQ версия вашего запроса вар запрос = (от р в db.Providers присоединиться пс в db.ProviderSubscriptions на p.Id равна ps.ProviderId Пусть S = от профи в постоянном .ProviderSubscription , где pro.id == p.id выберите pro.id , где s.contains (ps.Max (и => u.id)) выбрать новый ViewModel { providerid = p.Id, ProviderName = p.ProviderName, subscriptiondate = ps.ExpiryDate, }). ToList(); –

+0

и btw Надеюсь, вы пытались с капиталом «Содержит», не так ли? –

Смежные вопросы