2010-06-05 145 views
14

我有一個類和如下列表:LINQ和條件的總和

class C1 
{ 
    int RecType ...; 
    decimal Income ...; 
    decimal Outcome ...; 
} 

List<C1> myList ...; 

名單裝載幾個記錄,他們在RecType 各種值我想要的是來計算的總收入和結果,但只針對RecType

這裏一定值是什麼,我需要得到

totalIncome = myList.Sum(Income).Where(RecType==1); 

我怎樣才能做到這一點的LINQ僞代碼?

謝謝

回答

20
totalIncome = myList.Where(x => x.RecType == 1).Select(x => x.Income).Sum(); 

首先,你的記錄類型(Where)過濾器;那麼你可以通過每個對象的Income進行變換;最後你Sum這一切。

或者一個稍微更簡潔的版本:

totalIncome = myList.Where(x => x.RecType == 1).Sum(x => x.Income); 
24
totalIncome = myList.Sum(c=> 
    (c.RecType==1 ? c.Income : 0));
+0

我相信我的代碼將是比@馬克的快15-20%... – code4life 2010-06-06 22:22:34

+0

非常感謝,這似乎是唯一的修復我得到一個可以爲空的小數的總和。 – user1534664 2014-04-16 20:57:49

+0

這太棒了!與linq一起工作,甚至可以解決列表爲空時的問題。 – 2014-12-26 19:07:03