2015-05-06 2 views
0

я следующие две таблицы, которые хранят вызовы, которые пользователи сделали,Получить максимальную дату с помощью LINQ, где состояние, внутри запроса

Users 
----- 
IdUser int PK, 
Name varchar(50) 

Calls 
------ 
idCall int PK, 
idUser int FK, 
CallDate datetime 

Это код, я пытался, но я не могу показаться, чтобы заставить его работать

var resultado = (from Users in ctx.Users 
       join Calls in cts.Calls on Users.idUser equals Calls.idUser 
       select new 
       {       
        Name= Users.Name, 
        MaxDate=(from c in Calls select c.CallDate).Where(u=>u.IdUser==Users.IdUser).Max() 
       }).ToList(); 

Пример: у меня

User: 
----- 
0 John Doe 

Calls: 
------ 
0 0 23/11/2015 
0 0 25/11/2015 
0 0 26/11/2015 

запрос должен возвращать

Alan 26/11/2015 

ответ

1

Не проверено, но что-то вроде этой работы?

var resultado = (from Users in ctx.Users     
      select new 
      {       
       Name= Users.Name, 
       MaxDate=(from c in ctx.Calls where c.IdUser == Users.IdUser select c.CallDate).Max() 
      }).ToList(); 
+0

Нужно ли группировать запрос, по имени или что-то еще? – AlanRubinoff

+0

Я только заметил, что вы можете использовать группу, но это последнее редактирование показывает, как это сделать без группы. Вместо этого он будет использовать подзапрос. –

+0

Im положительное это решение будет работать, я пытаюсь прямо сейчас, сообщит вам, спасибо вам, кстати – AlanRubinoff

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