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?



Заранее спасибо,

555   4  

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

    Ничего не найдено.