我有一个点集合,存储在一个 PointCollection 中。
我需要集合中的点来画线。因此,例如,如果一个点集合有四个点,那将是两条线,因为我使用集合中的点对来绘制线。我正在寻找一种方法,最好使用 linq 和尽可能少的代码行,以基本上遍历我的 PointCollection,提取下一个可用的点对,然后使用点对绘制线。有没有办法使用 linq、lambda 表达式或扩展方法来做到这一点?
谢谢。
最佳答案
这里是获取配对的快速代码片段。
var listOfPairs = points
.Select((p, i) => new {p, i})
.GroupBy(x => x.i / 2)
.Where(g => g.Skip(1).Any())
.Select(g => g.Select(x => x.p).ToList())
.ToList();
与 foreach 循环相比,如果您有数千个点,则性能不佳。
这是另一个请求的表单,使用捕获的变量。
Point previous = points.FirstOrDefault();
List<Pair> pairs = points
.Skip(1)
.Select(p =>
{
Pair result = new Pair(p, previous)
previous = p;
return result;
})
.ToList();
关于c# - 从 PointCollection 中检索成对的点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2054673/