按映射字符串而不是整数排序
Order by mapped string instead of integer
在数据库中 table "Device" 有一列 "Status"(整数)
Name | Status
----------------
Device1 1
Device2 2
Device3 3
Device4 4
Device5 3
在我的应用程序中,我将列 "Status" 映射到人类可读的单词(字符串)
public enum Status
{
Start = 1,
Stop = 2,
Running = 3,
new Device = 4,
}
如果我按 "status" 排序,结果将按整数排序。
_repository.Query<Device>().OrderBy(c=>c.status)
.Skip(skip)
.Take(500);
在table"Devices"我有60000多条记录,所以我使用分页
结果:
Name | Status
------------------
Device1 Start
Device2 Stop
Device3 Running
Device5 Running
Device4 new Device
我需要的:
Name | Status
------------------
Device4 new Device
Device3 Running
Device5 Running
Device1 Start
Device2 Stop
我能做什么?
也许换个号码?
public enum Status
{
Start = 3,
Stop = 4,
Running = 2,
new Device = 1,
}
您可以使用条件运算符:
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);
在数据库中 table "Device" 有一列 "Status"(整数)
Name | Status ---------------- Device1 1 Device2 2 Device3 3 Device4 4 Device5 3
在我的应用程序中,我将列 "Status" 映射到人类可读的单词(字符串)
public enum Status
{
Start = 1,
Stop = 2,
Running = 3,
new Device = 4,
}
如果我按 "status" 排序,结果将按整数排序。
_repository.Query<Device>().OrderBy(c=>c.status)
.Skip(skip)
.Take(500);
在table"Devices"我有60000多条记录,所以我使用分页
结果:
Name | Status ------------------ Device1 Start Device2 Stop Device3 Running Device5 Running Device4 new Device
我需要的:
Name | Status ------------------ Device4 new Device Device3 Running Device5 Running Device1 Start Device2 Stop
我能做什么?
也许换个号码?
public enum Status
{
Start = 3,
Stop = 4,
Running = 2,
new Device = 1,
}
您可以使用条件运算符:
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);