2009-07-06 39 views
1

這裏是我的課是我的分組:C#Linq Group通過問題,可能真的很簡單!

public class RefundTran : DataObjectBase<RefundTran> 
    { 
     public string ARTranID { get; set; } 
     public decimal Amount { get; set; } 
     public string ARTranTypeCode { get; set; } 
     public int CheckNumber { get; set; } 
     public int CustID { get; set; } 
     public string PaymentTypeCode { get; set; } 
     public string PostedFlag { get; set; } 
     public decimal TaxAmount { get; set; } 
     public string TranDate { get; set; } 
     public string RefNumber { get; set; } 
     public decimal Balance { get; set; } 
    } 

這裏的列表<>:

List<RefundTran> trans = batchRefundToProcess.RefundCustomer.ARTransactions; 

而這裏的LINQ查詢到目前爲止,我已經有了:

var TransGroupedByType = 
        from t in trans 
        group t by t.PaymentTypeCode into g 
        select new { CustID = g.First<RefundTran>().CustID, PaymentTypeCode = g.Key, TotalBalance = g.Sum (p=> p.Balance) }; 

基本上,我想要的是一組交易,鍵入paymentTypeCode和TotalBalance,其中包含該付款類型代碼的RefundTran對象數組。

我錯過了什麼?

在此先感謝!通過t.PaymentTypeCode

+0

`TotalBalance `在這裏不稱爲**鍵**。它只是投影對象的成員。 – 2009-07-06 17:41:08

+0

我認爲你所要求的對我沒有多大意義。你想通過paymentTypeCode和TotalBalance進行分組? TotalBalance是一個聚合器!? – 2009-07-06 17:41:09

+0

你能解釋一下這個問題嗎?您的解決方案或下面提供的解決方案有什麼問題? – 2009-07-06 18:27:20

回答

2

看來你要交易的陣列也一樣,你應該把它添加到匿名類型:

var TransGroupedByType = from t in trans 
         group t by t.PaymentTypeCode into g 
         select new { 
          CustID = g.First().CustID, 
          PaymentTypeCode = g.Key, 
          TotalBalance = g.Sum(p => p.Balance), 
          TransactionList = g.ToArray() 
         }; 
0

魯汶考慮改變,爲:

T組通過新的{t.PaymentTypeCode,t.TotalBalance}

它,你通過這兩個屬性要組。然後,您就可以訪問g.Key.PaymentTypeCode,g.Key.TotalBalance