【问题标题】:Sort Class List by specific Variable按特定变量排序类列表
【发布时间】:2017-10-04 12:14:35
【问题描述】:

我有一个类列表,其中包含一个字符串。我想用来排序列表的字符串如下所示:"A1534-11"

我想按字母后面的 4 个数字订购它们。基本的OrderBy 方法只是按字母排序。我该怎么做?

这是我想要的:

"A1534-11"
"D1535-11"
"C1536-11"

【问题讨论】:

  • 1.了解如何提取字符串的那部分 2. 在 OrderBy 中使用它
  • 我建议您查看 IComparer 界面。这是更多的工作,但以后更容易阅读。

标签: c# .net linq sorting


【解决方案1】:

使用 LINQ 和TakeWhile 方法:

var result = lst.OrderBy(c => int.Parse(string.Join("",c.Name.Skip(1)
                             .TakeWhile(char.IsDigit)))).ToList();

我假设您的班级有一个名为 Name 的属性。当然,您应该将其更改为您的财产的名称。

【讨论】:

  • 我喜欢这个,因为它具有内置的位数灵活性。
【解决方案2】:

您可以解析该子字符串并将结果整数用于 LINQ 方法OrderBy

list = list.OrderBy(x => int.Parse(x.Text.Substring(1, 4))).ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-06
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    相关资源
    最近更新 更多