排序点列表C#

时间:2014-09-03 06:56:11

标签: c# list sorting point grasshopper

我试图对List进行排序(此Point3D是Rhino库类)。我希望之前有最小X的点,但如果它们具有相同的X,我需要用最小的Y对这些点进行排序。例如我有:

Point 1: X = 2; Y = 1
Point 2: X = 4; Y = 2
Point 3: X = 4; Y = 1
Point 4: X = 3; Y = 8
Point 5: X = 2; Y = 6
Point 6: X = 2; Y = 4

我想要的订单是:

Point 1: X = 2; Y = 1
Point 6: X = 2; Y = 4
Point 5: X = 2; Y = 6
Point 4: X = 3; Y = 8
Point 3: X = 4; Y = 1
Point 2: X = 4; Y = 2

我使用这个简单的代码:

myPointList.sort();

但我有一个订单,说明它不正确,因为我必须删除其中的一些点,如果他们有我想要的订单,我会删除正确的点,但我删除了正确的点我不想擦除。

有人可以帮助我吗?

非常感谢!

3 个答案:

答案 0 :(得分:2)

使用Linq:

Points.OrderBy(p => p.X).ThenBy(p => p.Y)

答案 1 :(得分:1)

你可能需要略微修改它,但想法是按x然后y

排序
var sortedList = PointList.OrderBy(p => p.X)
                          .ThenBy(p => p.Y)
                          .ToList();

答案 2 :(得分:0)

您需要实现自定义比较器并将其作为参数传递给排序方法。