我们使用Entity Framework,我们需要对对象进行一些运行时构建查询。从头开始构建表达式树似乎很多工作,所以我们想使用“System.Linq.Dynamic”
通过样本我得到了这个工作:
dbModel.As.Where("AStuff.Contains(@0) OR AStuff.Contains(@1)","ac","bc")
但是,如果我尝试单独构建表达式:
Expression<Func<A, bool>> predicateA =
DynamicExpression.ParseLambda<A, bool>(
"AStuff.Contains(@0)",
"ac"
);
Expression<Func<A,bool>> predicateB =
DynamicExpression.ParseLambda<A, bool>(
"AStuff.Contains(@0)",
"bc"
);
dbModel.As.Where("@0(it) OR @1(it)", predicateA, predicateB);
它爆炸,但有例外: NotSupportedException&gt;&gt; LINQ to Entities不支持LINQ表达式节点类型“Invoke”。
有可能以第一种形式构建整个查询,但后者在我们的场景中会更有用。有没有办法让这项工作?