是否可以使用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)));

老实说,最简单的解决方案可能是使用一种方法(这里有ints):
public IEnumerable<Point> GetPoints(int[] coordinates)
{
    for (int i = 0; i < coordinates.Length; i += 2)
    {
        yield return new Point(coordinates[i], coordinates[i + 1]);
    }
}

07-26 00:21
查看更多