LINQ和OR标准

时间:2011-08-24 09:51:08

标签: c# .net linq entity-framework predicatebuilder

如何以编程方式创建EF查询(使用lambda的扩展方法)。我了解标准。这是伪代码:

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

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

但我想要的不是和操作员。我想要一个或一个运营商。我该怎么做呢?如何在代码中创建复杂的条件树?

1 个答案:

答案 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();