2016-11-22 51 views
0

我有一個LINQ查詢返回查找數據。一個布爾參數被傳入稱爲active。不管工作狀態 優雅布爾LINQ查詢靈活主動= TRUE或Active = true或false

我想要麼在那裏活躍只返回行數=真 OR 返回所有行有一種優雅的方式LINQ的where子句中做到這一點?

  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

是的,但處理表單上它具有隻顯示其中活性=真。在配置形成有以示出激活=無所謂:-) – 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

輝煌 - 這就像一個魅力!不知道爲什麼我不考慮一個無效的布爾值。謝謝你們! – Martin