【问题标题】:OrderBy custom comparer specific letters before numbers数字前的 OrderBy 自定义比较器特定字母
【发布时间】:2019-08-11 06:50:03
【问题描述】:

假设我有以下列表:

var lettersAndNumbers = new List<string> { "5", "kl", "1", "st", "3" };

如何使用OrderBy 对列表进行排序,其中可以指定kl 应为第一项,st 为下一项,其余序列应按数字从低到高排序?

我知道我需要使用自定义comparer。我已经尝试并创建了一个实现ICompareablecomparer 类,但我似乎无法让它工作。非常感谢任何帮助。

【问题讨论】:

    标签: c# .net linq sorting


    【解决方案1】:

    您不需要comparer 来实现此目的。试试这样的:

    var res = lettersAndNumbers.OrderBy(c => !int.TryParse(c, out var temp) ? c : 
                                             temp.ToString("D10"))
                                            .OrderBy(c=> !char.IsDigit(c[0]) ? 0 : 1).ToList();
    

    【讨论】:

      猜你喜欢
      • 2016-07-07
      • 2017-11-19
      • 1970-01-01
      • 2011-12-26
      • 2020-11-27
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      • 2017-11-02
      相关资源
      最近更新 更多