我正在尝试创建一个类似于:
的查询column like 'a' or column like 'B' or column like 'C' //unknown number of OR
如何在EF4中执行此操作,在nHibernate中我会分离。
感谢。
答案 0 :(得分:3)
您需要动态构建表达式树。看看PredicateBuilder。
PredicateBuilder可以帮助您动态构建表达式树。
答案 1 :(得分:0)
如果你想要完全匹配(你的例子只显示完全匹配),你可以这样做:
string items = new string[] { "a", "b", "c" };
var query = from x in context.Entities
where items.Contains(x.Column)
select x;
仅适用于EF 4+,并且已翻译为column IN ('a', 'b', c')
。对于更高级的通用解决方案,您确实需要动态构建表达式树,如@Wouter de Kort所述,或者使用ESQL,您可以将查询作为字符串编写(并且可以根据需要组合多个字符串)。如果您希望使用复杂搜索模式进行通配符搜索,则必须使用ESQL或至少创建在动态创建的表达式树中重用的模型定义函数。
答案 2 :(得分:0)
有很多方法可以做到这一点。但是你应该知道每一个的优点和缺点。了解如何执行LINQ to SQL,LINQKit和存储过程中的PredicateBuilder来完成此任务!
http://kalcik.net/2014/01/05/joining-data-in-memory-with-data-in-database-table/