我有一个类和一个列表如下:
class C1
{
int RecType ...;
decimal Income ...;
decimal Outcome ...;
}
List<C1> myList ...;
列表中加载了几条记录,它们在RecType中有各种值 我想要的是计算收入和结果的总数,但仅限于RecType的某个值
这是我需要获取的伪代码
totalIncome = myList.Sum(Income).Where(RecType==1);
如何使用linq完成此操作?
谢谢
答案 0 :(得分:29)
totalIncome = myList.Sum(c=> (c.RecType==1 ? c.Income : 0));
答案 1 :(得分:26)
totalIncome = myList.Where(x => x.RecType == 1).Select(x => x.Income).Sum();
首先过滤记录类型(Where
);然后你通过Select
变换每个对象的Income
;最后你Sum
了。
或稍微简洁的版本:
totalIncome = myList.Where(x => x.RecType == 1).Sum(x => x.Income);