2011-08-24 89 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條件](的