我有一堂课:
public class PointD
{
public double X
{ get; set; }
public double Y
{ get; set; }
public PointD(double x, double y)
{
X = x;
Y=y;
}
//operator for +,-, * and / are overridden
}
Given a list<PointD>
,如何使用 LINQ 获得它的平均值? Afor
循环等效将是这样的:
double xx, yy;
for ( int i=0; i< ptlist.Count; i++)
{
xx+=ptlist[i].X;
yy+=ptlist[i].Y;
}
return new PointD(){X=xx, Y=yy};
您可以使用任何built-in仅 LINQ 函数。您无法定义负责此功能的扩展。
任何想法?
编辑:当然,您可以使用两个单独的Sum
在合并 X 和 Y 分量之前对它们进行 Sum 扩展方法。但这不是我想要的。我想要的是一个可以完成这项工作的查询/方法
The Aggregate
函数在这里会派上用场。
var sum = list.Aggregate((acc, cur) => acc + cur);
var average = list.Aggregate((acc, cur) => acc + cur) / list.Count;
只需确保您拥有/
为类型定义的运算符PointD
and int
,这应该可以完成工作。
注意:我不太确定您是否想要此处的总和或平均值(您的问题对此有些含糊),但我已经提供了两者的示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)