【问题标题】:How sort generic list like datatable in c#如何在c#中对像数据表这样的通用列表进行排序
【发布时间】:2013-12-19 10:13:34
【问题描述】:

我正在处理 c# 项目(winform)。

在我的项目中,我对数据表进行了如下排序:

dt.DefaultView.Sort = "a ASC, b ASC, c ASC";

现在使用下面的表达式,我对一个通用列表进行了排序,但结果与数据结果不同。

var newList = oldList.OrderBy(x => x.a).OrderBy(x => x.b).OrderBy(x => x.c).ToList();

如何像数据表结果一样对我的通用列表进行排序? (我希望在通用列表中具有相同排序的数据表结果)

谢谢。

【问题讨论】:

    标签: c# linq sorting datatable


    【解决方案1】:

    在第一个 OrderBy/OrderByDescending 运算符之后使用 ThenBy/ThenByDescending - 它执行已排序序列的后续排序:

    var newList = oldList.OrderBy(x => x.a)
                         .ThenBy(x => x.b)
                         .ThenBy(x => x.c)
                         .ToList();
    

    否则,您每次都会按不同的值重新排序完整序列(即,您正在引入忽略先前排序的新主排序 - 请参阅 MSDN 上的 备注 部分)。您最终将得到仅按提供给最后一次OrderBy 调用的值排序的序列(在您的情况下为属性c)。您当前的代码相当于

    dt.DefaultView.Sort = "a ASC";
    dt.DefaultView.Sort = "b ASC";
    dt.DefaultView.Sort = "c ASC";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-07
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      相关资源
      最近更新 更多