2016-11-22 1 views
0

У меня есть запрос LINQ для возврата данных поиска. Параметр bool передается в вызываемом активном состоянии.Элегантный логический запрос LINQ для Active = true или Active = true или false

Я хочу, чтобы либо вернуть только те строки, где активны = истина ИЛИ вернуть все строки, независимо от активного состояния Есть элегантный способ сделать это в ИНЕКЕ LINQ?

  return await (from p in db.PackSizeTypes.AsNoTracking() 
      where p.Active == true 
      orderby p.ID 

      select new PackSizeTypeObject 
      { 
       ID = p.ID, 
       Name = p.Name.Trim(), 
       LastEditedDate = p.LastEditedDate, 
       LastEditedBy = p.LastEditedBy, 
       Active = p.Active 
      }).ToListAsync(); 

Есть ли способ использовать тернарный оператор в предложении where для предоставления этого переключателя?

+0

Если вы хотите правду или все, разве это не все? –

+0

Да, но в форме обработки он должен показывать только, где active = true. В форме конфигурации он должен показать, где active = не имеет значения :-) – Martin

+0

Интересно, как вы решаете, хотите ли вы получить только активные записи или все записи? Есть ли второй параметр? – TripleEEE

ответ

1
IEnumerable<PackSizeTypeObject> MyPackSizeTypeObjects(bool? isActive) 
{ 

return await (from p in db.PackSizeTypes.AsNoTracking() 
      where p.Active == (isActive == null ? p.Active : isActive) 
      orderby p.ID 

select new PackSizeTypeObject 
     { 
      ID = p.ID, 
      Name = p.Name.Trim(), 
      LastEditedDate = p.LastEditedDate, 
      LastEditedBy = p.LastEditedBy, 
      Active = p.Active 
     }).ToListAsync(); 
} 
+0

Блестящий - это работает как шарм! Не знаю, почему я не рассматривал нулевое значение Boolean. Спасибо, ребята! – Martin

Смежные вопросы