使用 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();
我有一个包含很多列的 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();