我知道动态构造Linq查询的工作很少,例如 this ,和 this .
似乎没有一个是理想的,因为我想避免把表达式放在字符串中,如果不需要的话省略where。
我主要关心的是查询针对数据库进行了优化,并尽可能动态地省略不必要的子句。
EF4.0在这种情况下有什么新的发展吗?
更新
以下是我发现非常有用的一个链接: http://www.albahari.com/nutshell/predicatebuilder.aspx 实际上,动态添加“And”过滤器很简单,使用谓词生成器可以轻松地添加“Or”过滤器:
var predicate = PredicateBuilder.False<Product>(); predicate = predicate.Or (p => p.Description.Contains (temp));
由于省略了原因(伪代码,希望我能正确理解您的问题):
var query = IQueryable<Foo>(); if(someCondition) query = query.Where(......); var result = query.Select(.......);
对于动态查询-我没有听说任何新的。嗯,我们将不得不留任。你能想出更好的办法吗?