Sto utilizzando del codice (disponibile here su MSDN) per creare dinamicamente espressioni LINQ contenenti più "clausole" OR.Creazione di espressioni "piatte" anziché "albero" LINQ
Il codice di riferimento è
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));
Questo genera un'espressione LINQ che sembra qualcosa di simile:
(((((ID = 5) OR (ID = 4)) OR (ID = 3)) OR (ID = 2)) OR (ID = 1))
sto colpendo il limite di ricorsione (100) quando si usa questa espressione, in modo da Mi piacerebbe generare un'espressione simile a questa:
(ID = 5) OR (ID = 4) OR (ID = 3) OR (ID = 2) OR (ID = 1)
Come modificare l'ex codice di costruzione della pression per fare questo?
Piccolo cambiamento - sostituire equalsList.Length con equalsList.Count-1 - e funziona perfettamente. Grazie. –