如何对列表中所有共享特定属性的一组项求和
本文关键字:求和 一组 属性 列表 共享 | 更新日期: 2023-09-27 17:50:15
我有一个对象列表。每个对象都有一组变量/属性。它们由多个十进制数字和状态的字符串表示形式组成。我该如何将具有相同状态的对象列表中的每个数量相加?
我知道我可以执行Model.ReportList.Sum(x => x.Amount)
来获得整个列表中所有Amount变量的和。我想做同样的事情,但只对每个x
的Amount
变量求和,例如,x.State = "GA"
您正在寻找分组值,这可以使用GroupBy
完成,然后对每个组求和:
Model.ReportList.GroupBy(report => report.State,
(State, reports) => new { State, Sum = reports.Sum(report => report.Amount) });
使用GroupBy
可能是一个很好的答案,但是如果您只关心一个状态的总和,那么是多余的。如果这是您需要的(正如您的问题所建议的),请使用Where
扩展代替:
Model.ReportList.Where(x => x.State == "GA").Sum(x => x.Amount);
var sums = Model.ReportList.GroupBy(r => r.State)
.Select(grp => new { State = grp.Key, Sum = grp.Sum(r => r.Amount) })