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
Linq 为什么EntityFramework不使用我的谓词?_Linq_Entity Framework_Predicate - Fatal编程技术网

Linq 为什么EntityFramework不使用我的谓词?

Linq 为什么EntityFramework不使用我的谓词?,linq,entity-framework,predicate,Linq,Entity Framework,Predicate,我有一个PredicateBuilder,我从那里得到它 下面是我如何使用它: var Expression = PredicateBuilder.True<UCM_UserAgent>(); Expression = Expression.And(item => item.AgentText == "TestUserAgent Value"); Func<UCM_UserAgent, bool> SearchCriteria = Expression.Comp

我有一个PredicateBuilder,我从那里得到它

下面是我如何使用它:

var Expression = PredicateBuilder.True<UCM_UserAgent>();
Expression = Expression.And(item => item.AgentText == "TestUserAgent Value");

Func<UCM_UserAgent, bool> SearchCriteria = Expression.Compile();
var Data = Context.UCM_UserAgent
                                    .Where(SearchCriteria)
                                    .ToList();
现在,我添加的条件在哪里?我无法解决这个问题。不幸的是,这也无济于事

编辑:
消除任何误解;我不想使用as x=>x.AgentText=“SomeText”。因为我想构建一个动态LINQ查询,所以我使用PredicateBuilder。

如果希望LINQ将谓词隐藏到实体中,则需要将
表达式
版本传递给Queryable.Where()方法,而不是像目前这样将
Func
版本传递给Enumerable.Where()方法,也就是说,在调用Where方法之前,不要将表达式编译成IL,否则您将必须获得LINQ to Objects版本。

如果您希望LINQ将谓词隐藏到实体中,则需要将
表达式
版本传递到查询表。其中()方法,而不是像您当前所做的那样将
Func
版本传递给Enumerable.Where()方法,即在调用Where方法之前不要将表达式编译为IL,否则您将必须获得LINQ to Objects版本

SELECT 
[Extent1].[Id] AS [Id], 
[Extent1].[AgentText] AS [AgentText], 
FROM [dbo].[UCM_UserAgent] AS [Extent1]