但是没有一个是理想的,因为我不想把表达式放在字符串中,并且如果不需要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语句会根据应用的筛选条件进行相应调整。