是否可以使用linq将包含坐标元组(x,y),即[x0,y0,…,xn,yn]的双精度平面数组转换为包含在Point
-类(即[p0,…,pn]中包装的相同坐标的长度的一半的数组?
最好是.net 3.5,也可以是4.0。
最佳答案
您可以使用jon skeet的.Batch
:
IEnumerable<Point> points = coordinates.Batch(2,pair => new Point(pair.ElementAt(0), pair.ElementAt(1)));
老实说,最简单的解决方案可能是使用一种方法(这里有
int
s):public IEnumerable<Point> GetPoints(int[] coordinates)
{
for (int i = 0; i < coordinates.Length; i += 2)
{
yield return new Point(coordinates[i], coordinates[i + 1]);
}
}