【发布时间】:2013-08-13 22:05:44
【问题描述】:
我有一个按类型排序的对象数组。在该数组中是一组已按其首选相对顺序的一种类型的对象。排序后,这些对象被组合在一起,但不再以相同的顺序排列。我正在使用以下排序
Array.Sort(shapes, GetVisualComparer());
我一直在寻找一种承诺保留原始顺序的排序方法,但一无所获。
我会注意到我有一个解决方法,但它给代码增加了不必要的混乱,并且如果将来出现,也不能解决一般问题。
【问题讨论】:
-
" 一种承诺保留原始顺序的排序方法" 嗯? “增加了不必要的混乱”我明白你的意思...请显示示例数据和期望的结果。
-
您必须向比较器灌输有关这些项目的现有顺序的信息,以便它可以使它们保持相同的顺序。一种解决方法是对除这些项目之外的所有内容进行排序,然后在所需的位置插入预排序的组,但这可能会更笨重。
-
为什么不先使用'group by',然后对'group by'列表进行排序?
-
乔恩,我就是这么做的,太丑了。
-
GroupBy保留顺序,这是有保证的。 “IGrouping对象的生成顺序基于源中生成每个 IGrouping 的第一个键的元素的顺序。分组中的元素按以下顺序生成产生它们的元素出现在源代码中。”