如何组合Expression <Func > ?
我有一个数组
Expression<Func>
但是,我想将它们全部组合在一起以获得该类型的单个项目。 我该怎么做呢? 我可以投射Expression.And的结果吗?
如果您使用以下扩展方法:
public static Expression> And (this Expression> expr1, Expression> expr2) { var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast ()); return Expression.Lambda> (Expression.AndAlso (expr1.Body, invokedExpr), expr1.Parameters); }
从这里: http : //www.albahari.com/nutshell/predicatebuilder.aspx
然后你可以写这个将它们全部折叠成一个表达式。
public Expression> AggregateAnd(Expression>[] input) { return input.Aggregate((l,r) => l.And(r)); }