2011-08-24 54 views
0

如何以编程方式创建EF查询(使用lambda的扩展方法)。我了解条件。这里是伪代码:LINQ和OR条件

var query = repository.Where(x => x.Name == "aName"); 

foreach(string filter in filters) 
{ 
    query = query.Where(x => x.FilterValue.Contains(filter)) 
} 

但我想要的不是一个和运算符。我想要一个或运营商。我该怎么做呢?我如何在代码中创建复杂的标准树?

+0

可能重复http://stackoverflow.com/questions/4391044/dynamic- linq-or-conditions) – Steven

+0

谢谢Steven。这回答了我的问题。 – yonexbat

回答

1

http://www.albahari.com/nutshell/predicatebuilder.aspx

PrdicateBuilder是一个很好的解决方案。但它很复杂,不易理解。请参阅评论中的链接到其他问题。

也发现这个有用:有时是很方便的来自另一个方向:

string[] filter = {"A", "B"}; 
var returnValue = repository 
       .Where(x => x.Name == "aName") 
       .Where(x => filter.Any(f => (x.FilterValue).Contains(f))) 
       .ToList(); 
[动态LINQ OR条件](的