Найти максимальное значение в сгруппированном списке с помощью Linq - PullRequest
1 голос
/ 05 июля 2010

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 05 июля 2010

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

var transactionIds = ctx.MyTransactions
        .Where (x => x.AdapterId == Id)
        .GroupBy(x => x.DeviceTypeId, 
                 g => new {
                    DeviceTypeId = g.Key, 
                    MaxTransaction = g.Max(x => x.TransactionId)
                });
0 голосов
/ 05 июля 2010

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

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

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

int max = ctx.MyTransactions
             .Where(x => x.AdapterId == Id)
             .Max(t => t.TransactionId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...