2010-06-05 200 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