Estoy usando algún código (disponible here en MSDN) para construir dinámicamente expresiones LINQ que contengan múltiples 'cláusulas' OR.Construyendo expresiones 'planas' en lugar de 'árbol' LINQ
El código en cuestión es
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));
Esto genera una expresión LINQ que se ve algo como esto:
(((((ID = 5) OR (ID = 4)) OR (ID = 3)) OR (ID = 2)) OR (ID = 1))
Estoy golpeando el límite de recursión (100) cuando se utiliza esta expresión, por lo que Me gustaría generar una expresión que se ve así:
(ID = 5) OR (ID = 4) OR (ID = 3) OR (ID = 2) OR (ID = 1)
¿Cómo puedo modificar el ex código de construcción de presión para hacer esto?
Pequeño cambio - reemplace equalsList.Length con equalsList.Count-1 - y funciona perfectamente. Gracias. –