Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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查询_Linq_Entity Framework_Optimization_Dynamic_Dynamic Data - Fatal编程技术网

基于实体框架的动态Linq查询

基于实体框架的动态Linq查询,linq,entity-framework,optimization,dynamic,dynamic-data,Linq,Entity Framework,Optimization,Dynamic,Dynamic Data,我知道动态构造Linq查询的工作很少,例如,和 似乎没有一个是理想的,因为我希望避免将表达式放入字符串中,如果不需要,则省略where 我主要关心的是,查询针对数据库进行了优化,并尽可能动态地省略不必要的子句 EF 4.0中是否有针对此类场景的新开发 更新 以下是一个我发现非常有用的链接: 实际上,动态添加“和”过滤器非常简单,使用谓词生成器可以轻松地添加“或”过滤器: var predicate = PredicateBuilder.False<Product>(); predic

我知道动态构造Linq查询的工作很少,例如,和

似乎没有一个是理想的,因为我希望避免将表达式放入字符串中,如果不需要,则省略where

我主要关心的是,查询针对数据库进行了优化,并尽可能动态地省略不必要的子句

EF 4.0中是否有针对此类场景的新开发

更新

以下是一个我发现非常有用的链接: 实际上,动态添加“和”过滤器非常简单,使用谓词生成器可以轻松地添加“或”过滤器:

var predicate = PredicateBuilder.False<Product>();
predicate = predicate.Or (p => p.Description.Contains (temp));
var predicate=PredicateBuilder.False();
谓词=谓词。或(p=>p.Description.Contains(temp));

根据LinqPad,sql会根据应用的过滤器发出

省略Where原因(伪代码,希望我正确理解了您的问题):

var query=IQueryable();
如果(某些条件)
query=query.Where(……);
var result=query.Select(……);
对于动态查询,我没有听说过任何新的东西。依我看,我们将不得不坚持下去。你能想出更好的办法吗

var query = IQueryable<Foo>();

if(someCondition)
    query = query.Where(......);

var result = query.Select(.......);