Ich verwende Code (verfügbar here auf MSDN), um LINQ-Ausdrücke dynamisch zu erstellen, die mehrere OR-Klauseln enthalten.Erstellen von "flachen" LINQ-Ausdrücken
Der entsprechende Code ist
var equals = values.Select(value => (Expression)Expression.Equal(valueSelector.Body, Expression.Constant(value, typeof(TValue))));
var body = equals.Aggregate<Expression>((accumulate, equal) => Expression.Or(accumulate, equal));
Dies erzeugt einen LINQ Ausdruck, der etwa wie folgt aussieht:
(((((ID = 5) OR (ID = 4)) OR (ID = 3)) OR (ID = 2)) OR (ID = 1))
Ich schlage die Rekursion Grenze (100), wenn man diesen Ausdruck verwendet, so dass ich Möchte einen Ausdruck erzeugen, der so aussieht:
(ID = 5) OR (ID = 4) OR (ID = 3) OR (ID = 2) OR (ID = 1)
Wie würde ich die ex modifizieren Press Building Code, um dies zu tun?
Winzige Änderung - ersetze equalsList.Length mit equalsList.Count-1 - und es funktioniert perfekt. Vielen Dank. –