C# 如何使用Linq平均值

C# 如何使用Linq平均值,c#,linq,C#,Linq,我有这样一个项目列表: [ { "AAA": 3, "BBB": 5, "CCC": 2 }, { "AAA": 3, "BBB": 25, "CCC": 6 } ] 如何生成包含每个项目平均值的列表 这是预期的结果: { "AAA

我有这样一个项目列表:

[
    {
        "AAA": 3,
        "BBB": 5,
        "CCC": 2
    },
    {
        "AAA": 3,
        "BBB": 25,
        "CCC": 6
    }
]
如何生成包含每个项目平均值的列表

这是预期的结果:

{
    "AAA": 3,
    "BBB": 15,
    "CCC": 4
}
这是我尝试过的,但不起作用:

 var result = from x in items.AsEnumerable()
     group x by new { x.AAA, x.BBB, x.CCC } into g
                 select new
                 {
                     AAA_Average = Convert.ToInt32(g.Average(a => a.AAA)),
                     BBB_Average = Convert.ToInt32(g.Average(a => a.BBB)),
                     CCC_Average = Convert.ToInt32(g.Average(a => a.CCC))
                 };
.NET小提琴链接:

这样:

var结果=新 { AAA_Average=items.AsEnumerable.Averagex=>x.AAA, BBB_Average=items.AsEnumerable.Averagex=>x.BBB, CCC_Average=items.AsEnumerable.Averagex=>x.CCC, };
首先,我相信您需要的是平均值,而不是从样本中可以明显看出的问题标题所示的总和

你可以做以下事情


var result = new {
        AAA = items.Average(x=>x.AAA),
        BBB = items.Average(x=>x.BBB),
        CCC = items.Average(x=>x.CCC)
        };

请注意,平均值可以产生一个十进制值。如果需要对值进行四舍五入,可以使用数学。四舍五入

您可以一次汇总总数并计算平均值:

var average = items.Aggregate(
    new Item(),
    (acc, item) => { // calculate totals
        acc.AAA += item.AAA;
        acc.BBB += item.BBB;
        acc.CCC += item.CCC;
        return acc;
    },
    acc => { // calculate average (ensure there is at least 1 item)
        acc.AAA /= items.Count;
        acc.BBB /= items.Count;
        acc.CCC /= items.Count;
        return acc;
    }
 );

好处:通过项目进行一次迭代。

标题要求如何求和,但正文要求如何求平均。。。请选择您的问题。另外,你说你的尝试不起作用,但这并不意味着什么。你有错误吗?