6
public static Expression<Func<T, bool>> OrElse<T>(this
Expression<Func<T, bool>> expr1, Expression<Func<T, bool>> expr2)
{
ParameterExpression parameter = Expression.Parameter(typeof(T));
ReplaceExpressionVisitor leftVisitor =
new ReplaceExpressionVisitor(expr1.Parameters[0], parameter);
Expression left = leftVisitor.Visit(expr1.Body);
ReplaceExpressionVisitor rightVisitor =
new ReplaceExpressionVisitor(expr2.Parameters[0], parameter);
Expression right = rightVisitor.Visit(expr2.Body);
return Expression.Lambda<Func<T, bool>>(Expression.OrElse(left, right), parameter);
}
因为我有另一种方法,其中唯一的区别就是在return语句表达,如何通过Expression.OrElse
作为参数传递给方法(我的其他方法使用AndAlso
)?传递一个BinaryExpression作为参数
由于方法接近完全相同,所以我希望将一个通用方法的表达式作为参数传递。
我试过通过BinaryExpression
没有成功。
尝试使用对象。 – jdweng