我有一个包含许多列的表数据,我需要多次排序。 例如列包含Row#,Name,allowance,times ...
1, Peter, 2500, 2
2, Steve, 500, 1
3, Peter, 2500, 1
4, Peter, 2600, 2
5, Peter, 2800, 2
按名称升序排序,结果为:
1, Peter, 2500, 2
3, Peter, 2500, 1
4, Peter, 2600, 2
5, Peter, 2800, 2
2, Steve, 500, 1
按排序下降排序,结果为:
5, Peter, 2800, 2
4, Peter, 2600, 2
1, Peter, 2500, 2
3, Peter, 2500, 1
2, Steve, 500, 1
按升序排序,结果为:
5, Peter, 2800, 2
4, Peter, 2600, 2
3, Peter, 2500, 1
1, Peter, 2500, 2
2, Steve, 500, 1
由于某种原因,我们使用SortedList进行第一次排序,使用IComparer将项目添加到SortedList以允许重复的键。 按名称升序排序后,sortedList为:
["Peter"] | 1
["Peter"] | 3
["Peter"] | 4
["Peter"] | 5
["Steve"] | 2
第一种已经完成,但如何进行第二次和第三次排序......基于这种排序' Master'排序列表? 我的想法是第二种类型发生在具有相同密钥的邻居中,例如"彼得&#34 ;.意味着只需重新排序#1,3,4,5行进行第二次排序。 但我无法想到最好的方法。
答案 0 :(得分:0)
您可以在已排序列表中使用LinQ:
FindEntry
然后你可以像这样转换它:
var Customsortedlist = SortedList<T>.OrderBy(e => e.Name)
.ThenByDescending(e => e.Allowance)
.ThenBy(e => e.times );