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;
}
);
好处:通过项目进行一次迭代。标题要求如何求和,但正文要求如何求平均。。。请选择您的问题。另外,你说你的尝试不起作用,但这并不意味着什么。你有错误吗?