2012-12-14 71 views
0

在UI中,有一個下拉式參數爲'field'。它可以是一個特定的值,或者'All'是默認的,所有的行都與'field'值無關,需要被檢索。LINQ to SQL:where子句過濾器基於用戶輸入

如何在LINQ中編寫Where子句,以便如果用戶爲字段列提供值,則將其用作過濾器,否則從DB獲取所有行?

回答

2

您可以使用IQueryable<T>作爲基礎爲您的LINQ查詢,並追加到它所有你需要:

例子:

 string userInput = ""; 
     using (var context = new EntityModel()) 
     { 
      IQueryable<MyEntity> query = context.MyEntities; 

      if (!String.IsNullOrWhiteSpace(userInput)) 
       query = query.Where(x => x.MyFilterableProperty == userInput); 

      return query.ToList(); 
     } 
+0

+1;但刪除ToLIst()... – Pleun

+0

爲什麼要刪除ToList()?它純粹是一個例子,它會導致查詢的執行。 – Khan

+0

因爲你的答案的整個觀點是使用IQueryable 和ToList消失... – Pleun