答案 0 :(得分:1)
您的代码存在两个问题。
首先是你如何宣布你的方法:
Func<T, bool> ComposeFilter
执行此操作时,您将返回已编译的委托,并且所选的Where
扩展方法重载来自Enumerable
而不是Queryable
。
您必须将其声明为:
Expression<Func<T, bool>> ComposeFilter
第二个问题是您编写的代码无法转换为表达式树。由于您没有使用原语而是动态构建表达式,因此您需要了解System.Linq.Expressions
中的内容。