如何组合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)); }