使用SortedList对列进行排序

时间:2017-12-28 13:23:42

标签: c# sorting sortedlist columnsorting

我有一个包含许多列的表数据,我需要多次排序。 例如列包含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行进行第二次排序。 但我无法想到最好的方法。

1 个答案:

答案 0 :(得分:0)

您可以在已排序列表中使用LinQ:

FindEntry

然后你可以像这样转换它:

var Customsortedlist =  SortedList<T>.OrderBy(e => e.Name)
                                     .ThenByDescending(e => e.Allowance)
                                     .ThenBy(e => e.times );