2012-04-15 10 views
10

Ich habe dieses Beispiel, das 3 Ausdrücke erstellt und sie zu einem Array von Ausdrucken hinzufügt. Jetzt würde ich gerne wissen, wie man das Gleiche in einer Schleife für eine unbekannte Anzahl von Ausdrücken macht.Dynamische Filterausdrücke zu einem Array hinzufügen

Expression<Func<Product, bool>> filter1 = c => c.City.StartsWith("S"); 
Expression<Func<Product, bool>> filter2 = c => c.City.StartsWith("M"); 
Expression<Func<Product, bool>> filter3 = c => c.ContactTitle == "Owner"; 

Expression<Func<Product, bool>>[] filterExpressions = new Expression<Func<Product, bool>>[] { filter1, filter2, filter3 }; 
+1

Fügen Sie sie hinzu oder erstellen Sie sie? – Arion

+0

Erstellen und Hinzufügen :) – Tys

+1

@Arion gute Frage. TysHTTP - Es ist nicht klar, wo du hier stecken bleibst. Ich nehme an, es ist irgendwie eine "dynamische" Natur der Dinge. – NSGaga

Antwort

8

Verwenden Sie eine Liste statt eines Array:

var filterExpressions = new List<Expression<Func<Product, bool>>> 
    { filter1, filter2, filter3 }; 

filterExpressions.Add(c => c.Name.StartsWith("J")); 

Und dann, wenn Sie aus irgendeinem Grund müssen die Liste auf eine Methode zu übergeben, die nur ein Array dauert können Sie die ToArray verwenden () Methode:

var filterExpressionsArray = filterExpressions.ToArray(); 
+0

Mit Ausdrücken arbeiten, von denen Sie denken, OP würde das wissen - aber ich denke, wenn man die Frage wie folgt beantwortet, ist dies die einzige Antwort, die an dieser Stelle gegeben werden kann. – BrokenGlass

+0

Entschuldigung, ich habe es schon anders gelöst. Ich glaube, ich habe vergessen, wie eine Liste mir hier helfen könnte. Ich habe meinen Code auf List.ToArray() aktualisiert. Vielen Dank! – Tys

Verwandte Themen