我有一个对象列表,我想使用 Option.Numero_Reference 属性对其进行排序。
问题是 Numero_reference 是 xx.xx.xx 格式的字符串
有没有办法按xx组排序?
这是a现在所做的,女巫不起作用:
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();
这只会给我一个空列表。