使用 SortedList 对列进行排序

Sort columns using SortedList

我有一个包含很多列的 table 数据,我需要对其进行多次排序。 例如这些列包含行号、姓名、津贴、时间...

1, Peter,   2500,  2
2, Steve,    500,  1
3, Peter,   2500,  1
4, Peter,   2600,  2
5, Peter,   2800,  2

1st 按名称升序排序,结果为:

1, Peter,   2500,  2
3, Peter,   2500,  1
4, Peter,   2600,  2
5, Peter,   2800,  2
2, Steve,    500,  1

2次按容差降序排列,结果为:

5, Peter,   2800,  2
4, Peter,   2600,  2
1, Peter,   2500,  2
3, Peter,   2500,  1
2, Steve,    500,  1

3rd 按次数升序排序,结果为:

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' sortedList 进行第二次和第三次...排序? 我的想法是,第二类发生在具有相同密钥的邻居中,例如"Peter"。意味着只需要重新排序 Row# 1,3,4,5 进行第二次排序。 但我想不出最好的办法。

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

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

然后你可以这样转换它:

dataTable = Customsortedlist.AsDataView().ToTable();