Sco*_*ker 4 c# sql linq entity-framework
我有一个可查询的具有"代码"字段的实体
1.1.1,
1.1.2,
1.1.3,
1.1.4,
...,
1.1.10,
1.1.11
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我.OrderBy(x=> x.Code)对查询执行操作时,它按以下顺序返回
1.1.1,
1.1.10,
1.1.11,
1.1.2,
1.1.3,
...
Run Code Online (Sandbox Code Playgroud)
如何使对象列表按代码字段排序,用"."分隔,并作为每个部分之间的整数?
这是客户数据,所以我不能在1个数字前面加上"0".此代码字段中还有任意数量的".".
如果您需要更多信息,请与我们联系.
Version类应该是一个很好的方法.不幸的是Version.ParseLinq2Entity失败了,所以你必须首先从你的sql-server获取数据并在之后对其进行排序.
var result = input.AsEnumerable<string>().OrderBy(x => Version.Parse(x.Code));
Run Code Online (Sandbox Code Playgroud)
如果你可以做出一些假设,就像每个节点都可以有最多n个字母.你可以使用这段代码.
.OrderBy(x => String.Concat( x.Code.Split('.')
.Select(ss => ss.PadLeft(3, '0'))) )
Run Code Online (Sandbox Code Playgroud)