Dinamik olarak birden çok OR "cümlesi" içeren LINQ ifadeleri oluşturmak için bir kod kullanıyorum (MSDN üzerinde here kullanılabilir).'tree' LINQ ifadeleri yerine 'flat' yapı
ilgili koddur
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));
Bu şuna benzer bir LINQ ifadesini oluşturur:
(((((ID = 5) OR (ID = 4)) OR (ID = 3)) OR (ID = 2)) OR (ID = 1))
ben özyineleme sınırı (100) vuruyorum bu ifadeyi kullanırken, bu yüzden Bu gibi görünen bir ifade oluşturmak istiyorum:
(ID = 5) OR (ID = 4) OR (ID = 3) OR (ID = 2) OR (ID = 1)
Eski modeli nasıl değiştiririm Bunu yapmak için basma yapı kodu?
Küçük değişiklik - equalsList.Length'u equalsList.Count-1 ile değiştirin - ve mükemmel çalışıyor. Teşekkürler. –