我有一个对象列表。每个对象都有一组变量/属性。它们由多个小数和一个状态的字符串表示组成。如何对具有相同状态的对象列表中的每个金额求和?
我知道我可以Model.ReportList.Sum(x => x.Amount)
来获取整个列表中所有Amount变量的总和。我想做同样的事情,但只对每个Amount
的{{1}}变量求和,例如,x
。
答案 0 :(得分:3)
您希望对值进行分组,可以使用GroupBy
对其进行分组,然后对每个组进行求和:
Model.ReportList.GroupBy(report => report.State,
(State, reports) => new { State, Sum = reports.Sum(report => report.Amount) });
答案 1 :(得分:2)
var sums = Model.ReportList.GroupBy(r => r.State)
.Select(grp => new { State = grp.Key, Sum = grp.Sum(r => r.Amount) })
答案 2 :(得分:2)
使用GroupBy
可能是一个很好的答案,但如果您只关心一个州的总和金额,那就太过分了。如果这就是您所需要的(正如您的问题所示),请改为使用Where
扩展名:
Model.ReportList.Where(x => x.State == "GA").Sum(x => x.Amount);