Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#特定属性上的求和对象列表_C#_Asp.net_Asp.net Mvc_Linq - Fatal编程技术网

C#特定属性上的求和对象列表

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

我目前正在开发一个ASP.NET应用程序,需要根据从数据库接收的数据显示多个图表。我将它们作为对象列表接收,如下所示,例如:

{ 
    { 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写了下来,但它们确实是代码中的对象。这回答了你的问题吗?相关:有趣的方法,但遗憾的是,对于我目前的项目结构来说,这不是一个好主意,尽管如此,还是谢谢你的回答!