C#特定属性上的求和对象列表
我目前正在开发一个ASP.NET应用程序,需要根据从数据库接收的数据显示多个图表。我将它们作为对象列表接收,如下所示,例如:C#特定属性上的求和对象列表,c#,asp.net,asp.net-mvc,linq,C#,Asp.net,Asp.net Mvc,Linq,我目前正在开发一个ASP.NET应用程序,需要根据从数据库接收的数据显示多个图表。我将它们作为对象列表接收,如下所示,例如: { { name: "A", val: 20 }, { name: "A", val: 10 }, { name: "B", val: 6 }, { name: "C", val: 1 }, { name: "C", val
{
{ name: "A", val: 20 },
{ name: "A", val: 10 },
{ name: "B", val: 6 },
{ name: "C", val: 1 },
{ name: "C", val: 20 }
}
我要转换此列表,目标列表应如下所示:
{ { name: "A", val: 30 } { name: "B", val: 6 }, { name: "C", val: 21 } }
我希望所有名为“A”的对象“合并在一起”为一个对象,其中val现在是单个对象所有值的总和。目前,我正在使用一个foor循环和一个新列表,我每次都会循环使用它来实现这一点,但我认为这是非常低效的。可能有一些LINQ选项可以做到这一点,但我没有发现任何东西。我如何优化它
提前谢谢 您只需使用
对序列的元素进行分组
示例
var results = List.GroupBy(x => x.name)
.Select( x => new { name = x.Key, val = x.Sum(x => x.val) });
您可以使用来根据Name
属性对对象列表进行分组,然后使用来计算Val
属性的所有值之和
var groupResult = ListOfObject
.GroupBy(x => x.Name)
.Select(y => new
{
Name= y.Key,
Val = y.Sum(s => s.Val)
});
您也可以在数据库端对其求和
这是json,您正在使用它吗?或者这些C#类是您使用了错误的语法吗?如果是后者,
List.GroupBy(x=>x.name)。选择(x=>new{name=x.Key,val=x.Sum())代码>哦,是的,我用JSON写了下来,但它们确实是代码中的对象。这回答了你的问题吗?相关:有趣的方法,但遗憾的是,对于我目前的项目结构来说,这不是一个好主意,尽管如此,还是谢谢你的回答!