【发布时间】:2012-08-12 16:01:36
【问题描述】:
我有一个 WPF DataGrid,我有它,以便您可以通过单击列标题对其进行排序。它有效,但不稳定。如何让它稳定排序?
我的意思是,如果我有这张桌子:
Class | Student | Grade
-----------------------------
Art | James | A
Art | Amy | B
Art | Charlie | A
Science | James | D
Science | Amy | A
Science | Charlie | C
History | James | B
History | Amy | A
History | Charlie | C
如果我按学生排序,它会像你期望的那样工作:
Class | Student | Grade
-----------------------------
Art | Amy | B
Science | Amy | A
History | Amy | A
Art | Charlie | A
Science | Charlie | C
History | Charlie | C
Art | James | A
Science | James | D
History | James | B
但如果我现在按类别排序:
Class | Student | Grade
-----------------------------
Art | James | A
Art | Amy | B
Art | Charlie | A
History | James | B
History | Amy | A
History | Charlie | C
Science | James | D
Science | Amy | A
Science | Charlie | C
它破坏了学生的排序顺序(不稳定排序)。我想要的是稳定的排序,它保留了顺序:
Class | Student | Grade
-----------------------------
Art | Amy | B
Art | Charlie | A
Art | James | A
History | Amy | A
History | Charlie | C
History | James | B
Science | Amy | A
Science | Charlie | C
Science | James | D
似乎默认情况下它应该像这样工作,或者至少是一个切换。有没有人有什么建议? @Eirik 的 shift-clicking 想法有效,这表明行为是存在的。但是,我真正想要的是在没有任何修饰符的情况下那样工作。这不应该是“按此排序,然后按此排序,然后按此排序”的原因,应该将算法换成不同的算法。
看到这个:http://en.wikipedia.org/wiki/Sorting_algorithm#Stability
【问题讨论】:
-
您是否正在寻找一种在后面的代码中执行此操作的方法,或者希望有人知道如何使 shift-click-behaviour 成为默认行为?
-
@Grubsnik 我希望有人知道如何更改排序算法,因为我认为 shift-click 方法是一个主要的 hack。但是,它可以完成工作。