我也遇到了,有解决方案么?
这个不支持,我当时用的好像3.2版本的。微软自己带的可以支持,后面就没有这个规约模式了。
@JinaCookies:
我也用的NH3.2的版本,后来我改了下其中组合条件的实现方式,现在可以了,主要代码如下:
private static Expression<EXP> Compose<EXP>(this Expression<EXP> leftSide, Expression<EXP> rightSide, ExpressionType expType)
{
var rightInvoke = Expression.Invoke(rightSide, leftSide.Parameters.Cast<Expression>());
var newExpression = Expression.MakeBinary(ExpressionType.AndAlso, leftSide.Body, rightInvoke);
return Expression.Lambda<EXP>(newExpression, leftSide.Parameters);
}
public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second)
{
return first.Compose(second, ExpressionType.AndAlso);
}
public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second)
{
return first.Compose(second, ExpressionType.OrElse);
}