拥有一个包含3个双值x,y,z的类
public struct Point : IEquatable<Point>, IComparable<Point>
{
public double _X;
public double _Y;
public double _Z;
public double X { get { return _X; } set { _X = value; } }
public double Y { get { return _Y; } set { _Y = value; } }
public double Z { get { return _Z; } set { _Z= value; } }
public Point(double x, double y)
{
_X = x;
_Y = y;
_Z = 0;
}
public Point(double x, double y, double z)
{
_X = x;
_Y = y;
_Z = z;
}
}
在循环中我填写了像
这样的点列表 AllDataPoints = new Point[100];
double x,y,z;
for (int i = 0; i < SOMESOURCE.values; i++)
{
x = SOMESOURCE.X;
y = SOMESOURCE.Y;
z = SOMESOURCE.value;
AllDataPoints[i] = new Point(x, y, z);
}
然后我想在一个浮点数组中放入所有z值。
如何使用LINQ完成此操作?
答案 0 :(得分:3)
如果你想要LINQ的浮点结果:
float [] arrayResult = AllDataPoints.Select(e => (float) e.Z).ToArray() ;
或者如果你想留下双倍值:
double [] arrayResult = AllDataPoints.Select(e => e.Z).ToArray() ;
答案 1 :(得分:3)
在循环内我填写一个点列表
你可以在没有循环的情况下完成,如下所示:
arrayResult = SOMESOURCE
.Select(item => new Point(item.X, item.Y, item.value))
.ToArray();
我想在一个浮点数组中放入所有z值。
LINQ&#39; Select
允许您这样做:
var allZs = arrayResult.Select(pt => (float)pt.Z).ToArray();