【发布时间】:2010-10-04 03:55:07
【问题描述】:
我正在使用一些代码(可在 MSDN 上找到 here)来动态构建包含多个 OR“子句”的 LINQ 表达式。
相关代码是
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));
这会生成一个如下所示的 LINQ 表达式:
(((((ID = 5) OR (ID = 4)) OR (ID = 3)) OR (ID = 2)) OR (ID = 1))
我在使用这个表达式时达到了递归限制 (100),所以我想生成一个如下所示的表达式:
(ID = 5) OR (ID = 4) OR (ID = 3) OR (ID = 2) OR (ID = 1)
我将如何修改表达式构建代码来做到这一点?
【问题讨论】:
标签: .net linq wcf-data-services