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

使用Linq在分组列表中查找最大值,linq,group-by,Linq,Group By,我有一个linq表达式,它以组的形式返回事务。每个事务都有一个数值,我现在需要知道返回的所有事务的最高值是多少。此值保存在名为TransactionId的字段中 下面是我用来获取分组列表的表达式 var transactions = ctx.MyTransactions .Where (x => x.AdapterId == Id) .Grou

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

下面是我用来获取分组列表的表达式

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

我现在需要在“transactions”分组列表上编写一个表达式,以查找TransactionId字段的“max”。我尝试过不同的想法,但似乎都不符合分组结果。我是linq的新手,所以我不知道该怎么做。

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

int max = transactions.Max(g => g.Max(t => t.TransactionId));
或者您可以再次查询数据库:

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

这将为您提供每组的最大值

var transactionIds = ctx.MyTransactions
        .Where (x => x.AdapterId == Id)
        .GroupBy(x => x.DeviceTypeId, 
                 g => new {
                    DeviceTypeId = g.Key, 
                    MaxTransaction = g.Max(x => x.TransactionId)
                });

你想要每组的最大值吗?嗯。。。我对这个问题的解释有所不同,因为他说“所有交易返回的最高价值”@追溯编码员:如果你能解释一下你的意思,那就太好了。我在寻找所有分组项目的总体最大值。谢谢你的澄清。