2009-06-16 107 views
1

我想查詢一個DataTable,以計算其中的2列的總和和其餘的字段分組的結果。問題是我只能得到聚合列值,而我無法獲得非聚合值。DataTable聚合問題

下面是我使用的代碼:

var balances = from b in dtAccounts.AsEnumerable() 
       group b by b.Field<decimal>("ACCOUNT_ID") into g 
       select new 
         { 
          credit = g.Sum(b => b.Field<decimal>("CREDIT")), 
          debit = g.Sum(b => b.Field<decimal>("DEBIT")) 
         } 

有人能給出一個關於他的一段代碼提示?

在此先感謝

回答

2

範圍變量g有,表示您已通過分組的關鍵屬性Key。在你的情況下,這是b.Field<decimal>("ACCOUNT_ID")。因此,如果您想要結果爲account_id,則需要此查詢:

var balances = from b in dtAccounts.AsEnumerable() 
       group b by b.Field<decimal>("ACCOUNT_ID") into g 
       select new 
         { 
          accountId = g.Key, 
          credit = g.Sum(b => b.Field<decimal>("CREDIT")), 
          debit = g.Sum(b => b.Field<decimal>("DEBIT")) 
         }