2016-09-20 7 views
0

в таблице базы данных «Device» есть столбец «Статус» (целое число)Сортировать по отображенной строки вместо целого

 
Name | Status 
---------------- 
Device1  1 
Device2  2 
Device3  3 
Device4  4 
Device5  3 

В моем приложении у меня есть карта столбец «Статус» для считываемых слов человека (строка)

public enum Status 
{ 
    Start = 1, 
    Stop = 2, 
    Running = 3, 
    new Device = 4, 
} 

Если вы заказываете по "статусу", то результат будет иметь порядок целыми числами.

_repository.Query<Device>().OrderBy(c=>c.status) 
          .Skip(skip) 
          .Take(500); 

В таблице "Устройства" У меня есть более чем 60.000 записей, поэтому я использую ПЕЙДЖИНГ

Результат:

 
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 

Что я могу сделать?

ответ

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); 
+0

спасибо, это работает отлично – supersonic

0

Возможно, измените номер?

public enum Status 
{ 
    Start = 3, 
    Stop = 4, 
    Running = 2, 
    new Device = 1, 
}