2010-07-05 58 views
1

我有一个linq表达式返回组中的事务。每笔交易都有一个数值,现在我需要知道返回的所有交易中的最高价值。这个值保存在一个叫做TransactionId的域中使用Linq查找分组列表中的最大值

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

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

我现在需要编写一个表达式,在“transactions”分组列表中查找TransactionId字段的“max”。我尝试了不同的想法,但似乎没有与分组结果一起工作。我是linq的新手,所以我不知道如何做到这一点。

+0

的最大希望每个组中的最大? – SLaks 2010-07-05 13:51:52

+0

嗯......我以不同的方式解释了这个问题,因为他说'从所有*交易中返回的最高价值'。 @retrocoder:如果你能解释你的意思,那会很好。 – 2010-07-05 13:57:54

+1

我追踪了所有分组项目的整体最大值 – Retrocoder 2010-07-05 14:00:12

回答

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) 
       }); 
相关问题