如何以编程方式创建EF查询(使用lambda的扩展方法)。我了解和标准。这是伪代码:
var query = repository.Where(x => x.Name == "aName");
foreach(string filter in filters)
{
query = query.Where(x => x.FilterValue.Contains(filter))
}
但我想要的不是和操作员。我想要一个或一个运营商。我该怎么做呢?如何在代码中创建复杂的条件树?
答案 0 :(得分: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();