我有一个 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