2

次のリストがあるとしましょう

List<Invoice> InvoiceList

[0]
   AdvertiserCustomerID = "Generic Brand"
   GrossAmount = 1452
[1]
   AdvertiserCustomerID = "Generic Brand"
   GrossAmount = 4325
[2]
   AdvertiserCustomerID = "Generic Brand"
   GrossAmount = 2
[3]
   AdvertiserCustomerID = "Generic Brand 2"
   GrossAmount = 9211

同じAdvertiserCustomerIDを持つブランドを1つのエントリに結合し、GrossAmountの合計を計算する最も簡単な方法は何でしょうか。したがって、最終的なリストは次のようになります。

List<Invoice> InvoiceList

[0]
   AdvertiserCustomerID = "Generic Brand"
   GrossAmount = 5779
[1]
   AdvertiserCustomerID = "Generic Brand 2"
   GrossAmount = 9211

これは、新しいリストを作成し、FindIndexでAdvertiserCustomerIDを確認することで実現しましたが、これを行うもっと簡単な方法があるかどうか疑問に思っています。

ありがとう。

4

1 に答える 1

6
var result = InvoiceList
     .GroupBy(m => m.AdvertiserCustomerId)
     .Select(group => new Invoice {
                AdvertiserCustomerID = group.Key,
                GrossAmount = group.Sum(g => g.GrossAmount)
                }
     );

(あなたの例では、あなたは掛け算をしません、あなたは合計します)

これにより、が得られます。最後にをIEnumerable<Invoice>追加し.ToList()て列挙できます。

于 2012-06-12T12:59:34.693 に答える