Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态Linq结合EntityFramework给出错误_C#_Linq_Entity Framework_Linq To Entities_Dynamic Linq - Fatal编程技术网

C# 动态Linq结合EntityFramework给出错误

C# 动态Linq结合EntityFramework给出错误,c#,linq,entity-framework,linq-to-entities,dynamic-linq,C#,Linq,Entity Framework,Linq To Entities,Dynamic Linq,我们使用实体框架,并且需要在对象上进行一些运行时构建查询。从头开始构建表达式树似乎需要很多工作,因此我们希望使用“System.Linq.Dynamic” 通过对样本的研究,我得出了以下结论: dbModel.As.Where(“AStuff.Contains(@0)或AStuff.Contains(@1)”、“ac”、“bc”) 但是如果我尝试像这样单独构建表达式: Expression<Func<A, bool>> predicateA = D

我们使用实体框架,并且需要在对象上进行一些运行时构建查询。从头开始构建表达式树似乎需要很多工作,因此我们希望使用“System.Linq.Dynamic”

通过对样本的研究,我得出了以下结论:

dbModel.As.Where(“AStuff.Contains(@0)或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);
表达式谓词a=
DynamicExpression.ParseLambda(
“AStuff.Contains(@0)”,
“ac”
);
表达式谓词B=
DynamicExpression.ParseLambda(
“AStuff.Contains(@0)”,
“卑诗省”
);
其中(“@0(it)或@1(it)”,谓词EA,谓词EB);
它会爆炸,但有一个例外: NotSupportedException>>LINQ to实体中不支持LINQ表达式节点类型“Invoke”


可以用第一种形式构建整个查询,但在我们的场景中,后者更有用。有什么办法可以让它发挥作用吗

只需使用连接(或/和)多个谓词。

这里的目标是什么?您认为表达式树比SQL更简单还是更易于维护?@Andomar:以模块化方式构建动态linq。不,在这些情况下,动态SQL更容易构建,但出于许多其他原因,我们使用EF和Linq。所以我想在我的解决方案中坚持这个Linq EF“味道”。我认为这里缺少Linq:动态Linq应该不比动态sql难。谢谢,但让我担心的是,我离“将此字符串解析为Linq”的解决方案越来越远了,在sql时代,这是很容易做到的。。。我希望MS将来会在这方面做一些工作