我试图对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();
但我有一个订单,说明它不正确,因为我必须删除其中的一些点,如果他们有我想要的订单,我会删除正确的点,但我删除了正确的点我不想擦除。
有人可以帮助我吗?
非常感谢!
答案 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)
您需要实现自定义比较器并将其作为参数传递给排序方法。