在数据库表“设备”中有一列“状态”(整数)
姓名 | 地位 ---------------- 设备1 1 设备2 2 设备3 3 设备4 4 设备5 3
在我的应用程序中,我已将“状态”列映射到人类可读的单词(字符串)
public enum Status
{
Start = 1,
Stop = 2,
Running = 3,
new Device = 4,
}
如果我按“状态”排序,结果将按整数排序。
_repository.Query<Device>().OrderBy(c=>c.status)
.Skip(skip)
.Take(500);
在“Devices”表中我有超过 60.000 条记录,所以我使用分页
结果:
姓名 | 地位 ------------------ 设备1启动 设备2停止 设备3正在运行 设备5正在运行 Device4 新设备
我需要什么:
姓名 | 地位 ------------------ Device4 新设备 设备3正在运行 设备5正在运行 设备1启动 设备2停止
我能做什么?
您可以使用条件运算符:
var query = _repository.Query()
.OrderBy(c => c.Status == Status.NewDevice ? 0 : c.Status == Status.Running ? 1 : c.Status == Status.Start ? 2 : 3)
.Skip(skip)
.Take(500);
也许要换号码?
public enum Status
{
Start = 3,
Stop = 4,
Running = 2,
new Device = 1,
}