У меня есть сущность БД, которая выглядит следующим образом:
public class History
{
public int Id {get; set;}
public string Text {get; set;}
public DateTime DateTime {get; set;}
}
В дБ может быть несколько записей с одинаковым значением Text
, и мне нужно выбрать только те из них, которые являются самыми последними (последними) для каждого отдельного «текста» - так для каждого из Text
значение, которое я должен получить только одну последнюю запись.
Например, таблица базы данных с именем history:
id | text | dateTime
---------------------
1 abc 2018-01-05
2 qqq 2018-01-08
3 abc 2018-01-01
4 qqq 2018-05-05
5 abc 2018-01-03
результат запроса должен быть таким:
1 abc 2018-01-05
4 qqq 2018-05-05
Прямо сейчас, используя nHibernate, я делаю так:
var historyGroups = _session.Query<History>
.OrderBy(x => x.DateTime)
.GroupBy(x => x.Text)
.ToArray();
, а затем выбирает последний элемент для каждой группы - но он выбирает много данных, которые мне не нужны.
Как добиться этого более эффективным способом, через LINQ to SQL или через чистый SQL?