c# OrderBy 字符串层次结构 xx.xx.xx

标签 c# linq linq-to-entities

我有一个对象列表,我想使用 Option.Numero_Reference 属性对其进行排序。

Numero_reference 是一个 xx.xx.xx 格式的字符串

有没有办法按 xx 组排序?

这是目前所做的,巫婆不起作用:

myList.OrderByDescending(x => x.Option.Numero_Reference)
.ThenByDescending(x =>   x.Option.Numero_Reference.Substring(x.Option.Numero_Reference.IndexOf(".")))

这段代码给我类似的东西:

  • 3.9.6
  • 3.9.2
  • 3.8
  • 3.7.2
  • 3.6
  • 3.17.5
  • 3.17
  • 3.16.4.7
  • 3.11
  • 3.10.1

当我应该有:

  • 3.17.5
  • 3.17
  • 3.16.4.7
  • 3.11
  • 3.10.1
  • 3.9.6
  • 3.9.2
  • 3.8
  • 3.7.2
  • 3.6

我们是否可以看到,基本的字符串比较在第一个点后的第 10 个是错误的。

还有一点就是,分的组数是可变的,没有规律可循。

有人可以帮忙吗?

编辑

这是带有版本解决方案的完整查询:

context.Options.Join(context.Categories_Options,
 opt => opt.ID_Option,
 cat_opt => cat_opt.ID_Option,
 (opt, cat_opt) => new { Option = opt, Categories_Options = cat_opt })
 .Where(x => x.Categories_Options.ID_Categorie == catId)
 .OrderByDescending(x => new Version(x.Option.Numero_Reference))
 .Select(x => x.Option)
 .ToList();

这只会给我一个空列表。

最佳答案

您可以使用具有内置排序的 Version 类:

myList.OrderByDescending(x => new Version(x.Option.Numero_Reference))

关于c# OrderBy 字符串层次结构 xx.xx.xx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19282192/

相关文章:

c# - 在 MainWindow 中更改 UserControl 的可见性

c# - 我可以加快此查询以检索域中的所有计算机吗?

c# - 使用 Linq 读取 CSV

entity-framework - 涉及复杂对象的 Entity Framework 的 Linq 表达式构建

c# - Linq-to-Entity Left JOIN

c# - 如何从更小的、可重用的查询中组合 Entity Framework 查询?

c# - 如何过滤 DataGridView?

Java 浮点文字与 C#

c# - 如何创建返回对象属性并具有此属性名称的 lambda 表达式?

c# - 将字符串与非英文字符进行比较?