我知道动态构建Linq查询的工作很少,例如this和this。
似乎没有理想,因为我想避免将表达式放在字符串中,如果不需要则省略where。
我主要担心的是查询是针对数据库进行优化的,并且尽可能动态地省略不必要的子句。
EF 4.0是否有针对此类情况的新发展?
更新
这是我发现非常有用的一个链接: http://www.albahari.com/nutshell/predicatebuilder.aspx 实际上,动态添加“和”过滤器是微不足道的,使用谓词构建器可以轻松添加“或”过滤器:
var predicate = PredicateBuilder.False<Product>();
predicate = predicate.Or (p => p.Description.Contains (temp));
根据LinqPad的说法,sql会根据应用的过滤器进行相应的发送..
答案 0 :(得分:1)
为了省略Where cause(伪代码,希望我能正确理解你的问题):
var query = IQueryable<Foo>();
if(someCondition)
query = query.Where(......);
var result = query.Select(.......);
对于动态查询 - 我没有听说过任何新内容。恕我直言,我们将不得不保持弦乐。你能想出一些更好的方法吗?