0

我正在尝试对列表进行排序(这个 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();

但是我有一个不正确的命令,因为我必须删除其中一些点,如果它们有我想要的顺序,我会删除正确的点,但我会删除我不想删除的正确点.

有人能帮助我吗?

非常感谢!

4

3 回答 3

3

使用 Linq:

Points.OrderBy(p => p.X).ThenBy(p => p.Y)
于 2014-09-03T06:59:34.213 回答
1

您可能需要稍微修改一下,但我们的想法是先按 x 再按 y

var sortedList = PointList.OrderBy(p => p.X)
                          .ThenBy(p => p.Y)
                          .ToList();
于 2014-09-03T07:00:03.323 回答
0

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

于 2014-09-03T07:22:28.913 回答