2017-06-16 7 views
0

問題は、2つのパラメータを持つwhere節を持つlinqクエリがあることです。 最初のパラメータはグローバルフィルタから来て、2番目は列フィルタ。2つのパラメータを持つlinqを演算子で指定するか、値を正しく取得しない

グローバルフィルタに値を入力しても、カラムフィルタに値を入力しないと(カラムは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

試してみてくださいデータ.Where( p => (p.ProductName.ToLower()。contains(search.ToLower()))|| (p.ProductName.ToLower()。Contains(column.ToLower())) ).ToList(); –

+0

また、文法的にvar data = dataは動作しません。あなたが使用していた可能性がありますので、ここで緩和しているかもしれません。ちょうどFYI –

+0

こんにちはBhadhiri、正しい構文的なvarデータはrigthではありません。ありがとう。あなたが言ったように括弧を追加しようとします。 – jolynice

答えて

0

あなたが行う前に、OR のように括弧を追加するこの

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(); 
関連する問題