如何解决特定属性上的C#总和对象列表
我目前正在开发一个ASP.NET应用程序,在该应用程序中,我需要根据从数据库接收到的数据来显示几个图表。我以对象列表的形式接收它们,例如:
{
{ name: "A",val: 20 },{ name: "A",val: 10 },{ name: "B",val: 6 },{ name: "C",val: 1 },val: 20 }
}
我要转换此列表,目标列表应如下所示:
{ { name: "A",val: 30 } { name: "B",val: 21 } }
我希望将所有名称为“ A”的对象“合并”为一个对象,其中val现在是单个对象的所有值的总和。目前,我使用的是foor循环和新的List,我花了很长时间反复浏览以实现此目的,但是我认为这效率很低。可能有一些LINQ选项可以做到这一点,但我还没有发现任何东西。我该如何优化呢?
谢谢!
解决方法
您只需使用GroupBy
并投影结果
对序列的元素进行分组。
示例
var results = List.GroupBy(x => x.name)
.Select( x => new { name = x.Key,val = x.Sum(x => x.val) });
,
您可以使用.GroupBy()
根据Name
属性对对象列表进行分组,然后使用.Sum()
计算Val
属性的所有值的总和。
var groupResult = ListOfObject
.GroupBy(x => x.Name)
.Select(y => new
{
Name= y.Key,Val = y.Sum(s => s.Val)
});
,
您也可以在数据库端对其求和 https://www.w3resource.com/sql/aggregate-functions/sum-with-group-by.php
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。