EF4查询中的多个OR语句

时间:2011-10-15 08:55:31

标签: entity-framework

我正在尝试创建一个类似于:

的查询
column like 'a' or column like 'B' or column like 'C' //unknown number of OR

如何在EF4中执行此操作,在nHibernate中我会分离。

感谢。

3 个答案:

答案 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/