2017-06-16 4 views
0

Mein Problem ist, habe ich eine LINQ Abfrage mit einer WHERE-Klausel mit 2 Parametern, der erste Parameter kommt aus dem globalen Filter, und der zweite kommt aus Spaltenfilter.Klausel LINQ mit 2 Parameter mit Operator OR nicht die Werte richtig abrufen

Wenn ich den Wert in den globalen Filter eingeben, und ich keinen Wert im Spaltenfilter eingeben (Spalte wird string.empty), habe ich keinen Wert zurückgegeben, aber ich hätte.

Scheint, dass alles in Ordnung ist, aber ich sehe nicht, wo der Fehler ist.

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

Was mir fehlt hier :(

Vielen Dank im Voraus.

Jolynice

+0

Versuchen Sie, Klammer, bevor Sie oder wie tun Daten. Wo ( p => (p.ProductName.ToLower(). Enthält (search.ToLower())) || (p.ProductName.ToLower(). Enthält (column.ToLower())) ) .ToList(); –

+0

Auch syntaktisch var data = Daten werden nicht funktionieren, kann hier sein, um es zu erleichtern haben Sie vielleicht .. nur FYI –

+0

Hallo Bhadhiri, Sie sind syntaktisch korrekt var Daten ist nicht richtig, es war eine schlechte Kopie einfügen, bereits aktualisiert. Vielen Dank. Ich werde versuchen, die Klammer wie gesagt hinzuzufügen. – jolynice

Antwort

0

Bitte versuchen Sie diese

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