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

У меня есть несколько записей

id     title     date
1      aaa       2005
2      bbb       2003
3      aaa       2007
4      ccc       2005
5      ccc       2009

Мне нужно запросить, чтобы получить записи по дате макс

id     title     date
2      bbb       2003
3      aaa       2007
5      ccc       2009 

Запрос:

select * 
from Table 
where Table.date = (SELECT Max(date) 
                    FROM Table temp 
                    WHERE temp.title = Document.title)

У меня есть SQL-запрос, но мне нужно Linq-запрос для этого действия

2 ответа

Решение

Примерно так должно работать (C#):

var results = 
    from x in db.table
    group x by x.title into g
    select g.OrderByDescending(x => x.date)
            .First();

Теперь для правильной подкачки нужно позвонить Skip / Take на весь запрос вот так:

var results = 
    (from x in db.table
     group x by x.title into g
     select g.OrderByDescending(x => x.date)
             .First())
    .Skip(0)
    .Take(10);

GroupBy заголовок, перечисление группы заказов по убыванию даты, выберите первый элемент. что-то вроде этого:

db.EntityName.GroupBy( en => en.title ).Select( g => g.OrderByDescending( en => en.date ).First() )
Другие вопросы по тегам