这可能很简单,但是我的尝试(在Intellisense和MSDN的指导下)都偏离了常规。
如果我有一个包含3个double的类,如何获得这些列表的平均值?
class DataPoint
{
public int time;
public int X;
public int Y;
public int Z;
// Constructor omitted
}
class Main
{
List<DataPoint> points = new List<DataPoint>();
// Populate list
DataPoint averagePoint = points.Average(someMagicHere);
}
我希望
averagePoint
包含time
,x
,y
和z
值,这些值是组成列表的元素的这些属性的平均值。我该怎么做呢?我正在苦苦挣扎的是(我想)someMagicHere
,但是我可能完全使用了错误的方法。 最佳答案
static class DataPointExtensions
{
public static DataPoint Average (this IEnumerable<DataPoint> points)
{
int sumX=0, sumY=0, sumZ=0, count=0;
foreach (var pt in points)
{
sumX += pt.X;
sumY += pt.Y;
sumZ += pt.Z;
count++;
}
// also calc average time?
if (count == 0)
return new DataPoint ();
return new DataPoint {X=sumX/count,Y=sumY/count,Z=sumZ/count};
}
}
关于c# - 如何编写扩展函数以返回自定义类型的平均值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6298763/