Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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# - Fatal编程技术网

C# 如何计算具有相同(键)名称的列表值

C# 如何计算具有相同(键)名称的列表值,c#,C#,我有一份清单,上面有: public class ListContent { public string OrderName { get; set; } public int OrderNumber { get; set; } } 如果订单名在列表中更常见,我想添加订单号您可以使用LINQ完成这一切: 从LINQ开始,在OrderName上分组 现在您有了一个组列表,每个订单名一个,其中包含具有该订单名的所有ListContent结

我有一份清单,上面有:

    public class ListContent
    {
        public string OrderName { get; set; }

        public int OrderNumber { get; set; }

    }

如果订单名在列表中更常见,我想添加订单号

您可以使用LINQ完成这一切:

  • 从LINQ开始,在OrderName上分组
  • 现在您有了一个组列表,每个订单名一个,其中包含具有该订单名的所有ListContent结构。然后,您可以将这些内容相加为一个新的聚合ListContent
e、 g


您也可以稍微聪明一点,不必在只有一个具有该OrderName的列表内容的地方构建新的ListContent,但这是一个更容易理解的版本。

如果您的列表包含多个相同的
OrderName
,那么您可以进行
分组。然后您可以对同一组中的所有
OrderNumber
进行
sum
,如

var result = (from o in listContents
              group o by o.OrderName into grp
              select new
              {
                  OrderName = grp.Key,
                  Total = grp.Select(x => x.OrderNumber).Sum()
              }).ToList();
其中
listContents
是类
ListContent
的列表

然后您可以使用上面的
结果
打印它的项目值,如

foreach (var item in result)
{
    Console.WriteLine("OrderName: " + item.OrderName);
    Console.WriteLine("Total: " + item.Total);
}
foreach (var item in result)
{
    Console.WriteLine("OrderName: " + item.OrderName);
    Console.WriteLine("Total: " + item.Total);
}