2010-07-05 101 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) 
       }); 
相關問題