2015-11-23 2 views
1

Я хочу получить записи с надписью «Ограниченный» наверху. Вот мой запрос:Упорядочить по дате с условием

var records = (from entry in db.Table1 
        orderby entry.Always_Prohibited        
        select new 
          { 
           RowID = entry.RowID, 
           VehicleMake = entry.Make, 
           VehicleModel = entry.Model, 
           Restricted = (entry.Always_Prohibited == null || entry.Always_Prohibited == "False") ? "Restricted" : "Not Restricted" 
          }).ToList(); 

Я попытался с помощью OrderBy, но он не работает, потому что entry.Always_Probibited этого поле строки. Пожалуйста, предложите мне.

+0

http://stackoverflow.com/a/26186585/141172 –

+0

Возможный дубликат [LINQ Сортировать по убыванию с нулевыми значениями на Bottom] (http://stackoverflow.com/questions/26186527/linq-order -по-нисходящих с-нулевых значений-на-снизу) – Jonnus

ответ

1

Если у вас есть только два значения, просто убывающий порядок:

from entry in db.Table1 
orderby entry.Always_Prohibited descending 

Если у вас есть больше, присваивать целые значения для ваших строк:

from entry in db.Table1 
orderby entry.Always_Prohibited=="A" ? 0 : entry.Always_Prohibited=="B" ? 1 : 2 // and so on 

В качестве примечания, строки являются довольно ужасный способ хранения состояния в базах данных. Вы должны переделать его, чтобы сохранить его, а также определенные целые числа (предпочтительно как внешние ключи в основных таблицах поиска, т.е. строго типизированные перечисления).

0

Пользователь, а затем ниже, введите код. Это поможет вам.

var records = (from entry in db.Table1.AsQueryable(); 
       orderby entry.Always_Prohibited        
       select new 
         { 
          RowID = entry.RowID, 
          VehicleMake = entry.Make, 
          VehicleModel = entry.Model, 
          Restricted = (entry.Always_Prohibited == null || entry.Always_Prohibited == "False") ? "Restricted" : "Not Restricted" 
         }).ToList(); 
Смежные вопросы