当前位置: 首页 > 编程语言 > C#

使用LINQ获取自定义对象列表的总和-平均值分享

时间:2023-04-10 15:21:17 C#

使用LINQ获取自定义对象列表的总和/平均值;放;}publicdoubleY{get;放;}publicPointD(doublex,doubley){X=x;Y=y;}//+、-、*和/的运算符被覆盖}给定一个列表,如何使用LINQ获取它的平均值?等效的for循环是这样的:doublexx,yy;for(inti=0;iacc+cur);varaverage=list.Aggregate((acc,cur)=>acc+cur)/list.Count;只需确保为类型PointD和int添加值定义了/运算符,这应该可以完成工作。注意:我不太确定您在这里想要总和还是平均值(您的问题对此有些模棱两可),但我已经包含了两者的示例。您需要使用Aggregate方法,以便您可以提供自己的聚合函数(Sum只是此方法的一个方便的特例)。类似于:points.Aggregate(newPointD(0,0),(a,p)=>a+p);我知道你说过你不需要任何额外的方法定义,但如果这是一个常见的操作,我倾向于为此编写一个扩展方法,publicstaticPointDSum(thisIEnumerablesource){returnsource.Aggregate(newPointD(0,0),(a,p)=>a+p);}因为它能够写得更具可读性:以上是C#学习教程:UsingLINQtogetthesum/averageofalistwithcustomobjects分享全部内容,如果对大家有用还需要进一步了解C#学习教程,希望大家关注——points.Sum();[事实]publicvoidCanAddManyPointDs(){varpoints=new[]{newPointD(1,1),newPointD(2,3),newPointD(3,4),};varresult=points.Aggregate((p1,p2)=>newPointD(p1.X+p2.X,p1.Y+p2.Y));Assert.Equal(result.X,6);断言。等于(结果。Y,8);}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: