大佬教程收集整理的这篇文章主要介绍了如何 Linq 平均,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个这样的项目列表:
[
{
"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 fiddle 链接:https://dotnetfiddle.net/pZ6TGD
您可以一次性汇总总数并计算平均值:
var average = items.Aggregate(
new Item(),(acc,item) => { // calculate @R_835_10586@ls
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;
}
);
优点:通过项目进行单次迭代。
,首先,我相信您需要 Average
而不是 Sum
,如问题标题所示(从您的示例中可以看出)
您可以执行以下操作
var result = new {
AAA = items.Average(x=>x.AAA),BBB = items.Average(x=>x.bBB),CCC = items.Average(x=>x.CCC)
};
请注意,Average 可能会产生一个十进制值。如果您需要舍入该值,您可以使用 @H_690_5@math.Round
以上是大佬教程为你收集整理的如何 Linq 平均全部内容,希望文章能够帮你解决如何 Linq 平均所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。