2016-08-03 7 views
-1

Ich dachte, ich verstehe, wie die LINQ enthält funktioniert, aber ich bekomme nicht meine Aussage, um die Ergebnisse zu filtern.Linq zu Entities - Enthält nicht funktioniert

In diesem Fall hätte ich erwartet, dass die ersten 2 Datensätze zurückgegeben werden, aber ich bekomme alle Ergebnisse zurück.

Warum werden die Daten von meinem LINQ Contains nicht herausgefiltert?

MYTABLE: 
CODE VERSION STRING_ID 
A1  1   AAA 
A1  1   BBB 
A1  1   CCC 
A1  1   DDD 

List<String> ListStrings has values of: 
AAA 
BBB 

My Query: 
      var query = context.MYTABLE.Where(x => x.CODE == "A1" && x.VERSION == "1"); 

      if (ListStrings!= null) 
      { 
       query.Where(x => ListStrings.Contains(x.STRING_ID)); 
      } 

      return query.ToList(); 
+2

'query = query.Where (..) ' –

Antwort

4

Die Where() Methode selbst wird eine IEnumerable Sammlung zurück, die die Filterung angewendet hat, so dass Sie Ihre Anfrage Objekt gleichgesetzt müssen:

query = query.Where(x => ListStrings.Contains(x.STRING_ID));