2010-07-05 5 views
1

У меня есть выражение linq, которое возвращает транзакции в группах. Каждая транзакция имеет числовое значение, и теперь мне нужно знать, что является самым высоким значением из всех возвращенных транзакций. Это значение сохраняется в поле TransactionIdНайти максимальное значение в сгруппированном списке, используя Linq

Вот выражение, которое я использую, чтобы получить сгруппированный список.

  var transactions = ctx.MyTransactions 
           .Where (x => x.AdapterId == Id) 
           .GroupBy(x => x.DeviceTypeId); 

мне теперь нужно написать выражение, которое работает на «сделки», сгруппированных список, чтобы найти «макс» поля TransactionID. Я пробовал разные идеи, но никто, похоже, не работает с сгруппированными результатами. Я новичок в linq, поэтому не знаю, как это сделать.

+0

Вы хотите максимальную в каждой группе? – SLaks

+0

Хм ... Я интерпретировал вопрос по-разному из-за той части, где он говорит «наивысшее значение из * все * транзакции возвращены». @retrocoder: Было бы хорошо, если бы вы могли объяснить, что вы имеете в виду. –

+1

Я получаю общий максимум от всех сгруппированных предметов – Retrocoder

ответ

0

Вы пытались найти максимум в каждой группе, а затем находить максимальное значение для всех групп?

int max = transactions.Max(g => g.Max(t => t.TransactionId)); 

Или вы могли бы просто запросить базу данных еще раз:

int max = ctx.MyTransactions 
      .Where(x => x.AdapterId == Id) 
      .Max(t => t.TransactionId); 
0

Это даст вам максимум в каждой группе

var transactionIds = ctx.MyTransactions 
     .Where (x => x.AdapterId == Id) 
     .GroupBy(x => x.DeviceTypeId, 
       g => new { 
        DeviceTypeId = g.Key, 
        MaxTransaction = g.Max(x => x.TransactionId) 
       }); 
Смежные вопросы