Linq:将IEnumerable <Point>转换为IEnumerable <float>

Osi*_*ris 3 c# linq

我有一个IEnumerable<Point>,我想将其转换为IEnumerable<float>.

我可以在单个Linq语句中执行此操作吗?

IEnumerable<float> ConvertToPoints(IEnumerable<Point> points)
{
    List<float> floats = new List<float>();
    foreach(var point in points)
    {
        floats.Add(point.X);
        floats.Add(point.Y);
    }
    return floats;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 10

是的,您可以使用SelectMany:

return points.SelectMany(point => new float[] { point.X, point.Y });
Run Code Online (Sandbox Code Playgroud)

另一种不需要LINQ的方法是使用迭代器块:

IEnumerable<float> getPoints(IEnumerable<Point> points)
{
    foreach (Point point in points)
    {
        yield return point.X;
        yield return point.Y;
    }
}
Run Code Online (Sandbox Code Playgroud)