使用Linq查找分组列表中的最大值

时间:2010-07-05 13:48:52

标签: linq group-by

我有一个linq表达式,它返回组中的事务。每个事务都有一个数值,我现在需要知道返回的所有事务的最高值是多少。该值保存在名为TransactionId

的字段中

这是我用来获取分组列表的表达式。

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

我现在需要编写一个对“事务”分组列表起作用的表达式,以查找TransactionId字段的“max”。我尝试了不同的想法,但似乎没有一个与分组结果一起使用。我是linq的新手,所以我不知道该怎么做。

2 个答案:

答案 0 :(得分:0)

您是否尝试在每个组中找到最大值,然后在所有组中查找最大值?

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

或者您可以再次查询数据库:

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

答案 1 :(得分: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)
                });