2017-06-16 32 views
0

我的問題是,我有一個linq查詢與2個參數的where子句, 第一個參數來自全局過濾器,第二個來自列過濾器。子句linq與2參數與操作符或不正確檢索值

當我在全局過濾器中輸入值,並且我沒有在列過濾器中輸入任何值(列將爲string.empty)時,我沒有返回任何值,但我應該有。

看來,每件事情都可以,但我不知道錯誤在哪裏。

string search = Request.Form.GetValues("search[value]")[0]; 
var column= Request.Form.GetValues("columns[0][search][value]").FirstOrDefault() ?? string.Empty; 

      var dataResut = data.Where(
           p => 
           p.ProductName.ToLower().Contains(search.ToLower()) || p.ProductName.ToLower().Contains(column.ToLower()) 
           ).ToList(); 

我是缺少在這裏:(

在此先感謝。

Jolynice

+0

嘗試加入括號像 data.Where( p => (p.ProductName.ToLower()。Contains(search.ToLower()))|| (p.ProductName.ToLower()。Contains(column.ToLower())) ).ToList(); –

+0

也語法VAR數據=數據不會工作,可能在這裏爲了緩解它,你可能已經使用..只是FYI –

+0

你好Bhadhiri,你是正確的語法var數據不是rigth,這是一個壞的複製粘貼,已經更新。謝謝。我會嘗試按照你所說的添加括號。括號中的 – jolynice

回答

0

請你做之前,或嘗試這個

var dataResut = data.Where(
          p => 
          (string.IsNullOrEmpty(search) ? false : p.ProductName.ToLower().Contains(search.ToLower())) || (string.IsNullOrEmpty(column) ? false : p.ProductName.ToLower().Contains(column.ToLower())) 
          ).ToList();