【发布时间】:2014-02-04 21:39:16
【问题描述】:
我有一个包含 50 个元素的点列表,我想对它们进行排序,所以我使用 orderby thenby to,但我的输出似乎是错误的。第一个元素被相应地排序,但接下来的元素是错误的,这是一个屏幕截图。
正确排序的前五个数据应该是其他数据。但接下来的不是。不知道是什么问题。
所以接下来的五个输出一定是:
{X=249, Y=198}
{X=249, Y=308}
{X=249, Y=413}
{X=249, Y=519}
{X=249, Y=629}
我的列表是一个 PointF 列表:
List<PointF> points = new List<PointF>();
这是我的代码:
points = points.OrderBy(c => c.X).ThenBy(c => c.Y).ToList();
【问题讨论】:
-
我怀疑您的 X 值不准确。例如,您可能在不同的点上有 X=249 和 X=249.00000001。尝试修改代码为
OrderBy(c=>Math.Floor(c.X)).ThenBy(c=>c.Y) -
@Zruty:非常合理;您应该将其发布为答案!
-
@Zruty 你的回答为我提供了正确的输出,我不明白为什么。谢谢zruty! +1
-
我也得到了错误的输出,正如我在你的回答中所说的那样。
标签: c# linq list sorting point