代码之家  ›  专栏  ›  技术社区  ›  qtg

使用SortedList对列进行排序

  •  0
  • qtg  · 技术社区  · 8 年前

    我有一个包含许多列的表数据,我需要对其进行多次排序。 e、 g.列包含行#、名称、容差、时间。。。

    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
    

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

    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
    

    第一次排序已完成,但如何进行第二次和第三次排序。。。是否基于此“主”排序列表进行排序? 我的想法是,第二种排序发生在具有相同键的邻居中,例如“Peter”。表示只需对第二次排序的第#1,3,4,5行重新排序。 但我想不出最好的办法。

    1 回复  |  直到 8 年前
        1
  •  0
  •   KHL    8 年前

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

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

    然后,您可以这样转换它:

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