LINQ将数组[x0,y0,...,xN,yN]转换为可枚举的[p0,...,pN]

lar*_*moa 5 .net c# linq

是否可以使用LINQ将包含坐标元组(x,y)的双精度平面数组(即[x0,y0,...,xN,yN])转换为包含相同坐标的长度的一半的数组.Point-class,即[p0,...,pN]?

最好是.NET 3.5,但也对4.0感兴趣.

Kob*_*obi 6

你可以使用.BatchJon Skeet的morelinq:

IEnumerable<Point> points = coordinates.Batch(2,pair => new Point(pair.ElementAt(0), pair.ElementAt(1)));
Run Code Online (Sandbox Code Playgroud)

老实说,最简单的解决方案可能是使用一种方法(这里有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]);
    }
}
Run Code Online (Sandbox Code Playgroud)