【问题标题】:Sorting datatable by two columns with one column asc and the other one desc c#按两列对数据表进行排序,一列 asc,另一列 desc c#
【发布时间】:2017-01-12 14:33:18
【问题描述】:

我在数据表中有多个列,如下所示:

   COL1   COL2 COL3      
   aaa    5    bla
   bbb    8    blablabla
   ccc    11   blabla
   ddd    9    bl
   eee    6    blabl

我正在尝试按 COL1 asc 和 COL2 desc BOTH 对这个数据表进行排序!

我尝试了以下解决方案,但它并没有完全对第二列进行排序:

DataTable dt = GetMyData();
dt.DefaultView.Sort = "COL1";
dt.DefaultView.Sort = "COL2 DESC";
dt = dt.DefaultView.ToTable();

【问题讨论】:

    标签: c# sorting datatable defaultview


    【解决方案1】:

    使用 LINQ to DataSet/DataTable

    https://msdn.microsoft.com/en-us/library/bb386977.aspx

    var newDt = dt.AsEnumerable()
                .OrderByDescending(x => x.Field<int>("COL2"))
                .ThenBy(x => x.Field<string>("COL1"))
                .CopyToDataTable();
    

    【讨论】:

      【解决方案2】:
        DataView sortedView = new DataView(dt);
      
        // Sort by COL1 and COL2
        sortedView.Sort = "COL1 DESC, COL2 ASC";
      

      在此之后,您应该在数据视图中对记录进行了排序

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        • 2011-03-22
        • 1970-01-01
        相关资源
        最近更新 更多