Linq distinct & max
Я должен запросить эту таблицу:
symbol time
------ ----------
aaa 2013-04-18 09:10:28.000
bbb 2013-04-18 09:10:27.000
aaa 2013-04-18 09:10:27.000
bbb 2013-04-18 09:10:26.000
Мне нужна одна строка для всех различных символов, имеющих наибольшее значение времени. Как мне написать запрос linq?
Заранее спасибо,
4 ответов:
Группируйте строки по символу , а затем выберите из каждой группы Элемент с максимальным временем (Таблица - это имя таблицы базы данных из контекста):
from r in Table group r by r.symbol into g select g.OrderByDescending(x => x.time).First()То же самое с синтаксисом метода:
Table.GroupBy(r => r.symbol) .Select(g => g.OrderByDescending(x => x.time).First());
Попробуйте это
var q = MyTable.GroupBy(x => x.symbol ) .Select(g => g.OrderByDescending(i => i.time).First());Или используйте max вот так
var data = from r in MyTable group r by r.symbol into g select new { name= g.Key, data= g.Max(a=>a.time) };
Я бы действительно использовал.
void Main() { var set = new [] { new Foo{A = "aaa", B = 1}, new Foo{A = "bbb", B = 2}, new Foo{A = "aaa", B = 3}, new Foo{A = "bbb", B = 4}, }; var result = from x in set group x.B by x.A into g select new {id = g.Key, biggest = g.Max()}; Console.WriteLine(result); }
U может использовать лямбда-выражение с Linq -
var result= (from li in List.Distinct().OrderByDescending(x => x.time) select li).FirstOrDefault();
Comments