使用Entity Framework进行动态Linq查询

3

我了解一些动态构建Linq查询的方法,例如这个这个

但是没有一个是理想的,因为我不想把表达式放在字符串中,并且如果不需要where子句,则可以省略它。

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

在EF 4.0中是否有任何新的发展适用于这种情况?

更新:

我发现这个链接非常有用:http://www.albahari.com/nutshell/predicatebuilder.aspx。实际上,动态添加“And”过滤器很简单,而使用谓词生成器可以轻松地添加“或”过滤器:

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

根据LinqPad的显示,SQL语句会根据应用的筛选条件进行相应调整。
1个回答

1

如果要省略Where条件(伪代码,希望我理解了你的问题):

var query = IQueryable<Foo>();

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

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

对于动态查询-我没有听说过任何新的东西。在我看来,我们将不得不使用字符串。你能想出更好的方法吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接