【问题标题】:Find the max value in a grouped list using Linq使用 Linq 在分组列表中查找最大值
【发布时间】:2010-07-05 13:48:52
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你想要每个组的最大值?
  • 嗯...我对这个问题的解释不同,因为他说“所有交易返回的最高值”。 @retrocoder:如果你能解释一下你的意思就好了。
  • 我追求所有分组项目的总体最大值
  • 感谢您的澄清。

标签: linq group-by


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 2020-08-21
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      相关资源
      最近更新 更多