使用Entity Framework进行动态Linq查询

时间:2010-10-21 00:21:22

标签: linq entity-framework optimization dynamic dynamic-data

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

似乎没有理想,因为我想避免将表达式放在字符串中,如果不需要则省略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会根据应用的过滤器进行相应的发送..

1 个答案:

答案 0 :(得分:1)

为了省略Where cause(伪代码,希望我能正确理解你的问题):

var query = IQueryable<Foo>();

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

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

对于动态查询 - 我没有听说过任何新内容。恕我直言,我们将不得不保持弦乐。你能想出一些更好的方法吗?