2017-06-16 6 views
0

Mon problème est, j'ai une requête linq avec une clause where avec 2 paramètres, les premiers paramètres viennent du filtre global, et le second vient de filtre de colonne.Clause linq avec 2 paramètre avec opérateur OU ne pas récupérer les valeurs correctement

Lorsque j'entre la valeur dans le filtre global, et que je n'entre aucune valeur dans le filtre de colonne, (la colonne sera string.empty), je n'ai aucune valeur retournée, mais j'aurais dû.

Semble que tout est ok, mais je ne vois pas où est l'erreur.

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(); 

Ce que je suis absent ici :(

Merci à l'avance.

Jolynice

+0

essayer d'ajouter entre parenthèses avant de faire ou comme data.Where ( p => (p.ProductName.ToLower(). Contient (search.ToLower())) || (p.ProductName.ToLower(). Contient (column.ToLower())) ) .ToList(); –

+0

Aussi syntaxiquement var données = données ne fonctionnent pas, peut être ici pour l'assouplir que vous pourriez avoir utilisé .. juste FYI –

+0

Bonjour Bhadhiri, vous êtes correct syntaxiquement var les données ne sont pas rigides, c'était un mauvais copier coller, déjà mis à jour. Merci. Je vais essayer d'ajouter les parenthèses comme vous l'avez dit. – jolynice

Répondre

0

S'il vous plaît essayer

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();