【发布时间】:2018-02-12 06:51:20
【问题描述】:
我有一个可查询的带有“代码”字段的实体
1.1.1,
1.1.2,
1.1.3,
1.1.4,
...,
1.1.10,
1.1.11
不幸的是,当我对查询执行.OrderBy(x=> x.Code) 时,它按以下顺序返回
1.1.1,
1.1.10,
1.1.11,
1.1.2,
1.1.3,
...
如何使对象列表按代码字段排序,由“.”分隔并在每个部分之间作为整数?
这是客户数据,所以我不能只在 1 个数字前面加上“0”。 在此代码字段中,它也是任意数量的“.”。
如果您需要更多信息,请告诉我。
【问题讨论】:
-
这是什么数据类型?字符串?
-
它是一个对象,但是Code字段是一个字符串
-
这是逗号的一部分吗?或者是为了好玩
-
我会创建 sql 函数,它将其转换为可排序的表示形式(例如,如果您使用 SQL Server,则转换为
hierarchyid类型),然后使用该函数进行排序 (ctx.Codes.OrderBy(c => Db.MySortFunction(c.Code))) -
您可以创建第二个字段,该字段返回一个更易于排序的值。对于“X.Y.Z”的“代码”值,您可以返回“X*10^6+Y*10^3+Z”
标签: c# sql entity-framework linq