0

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

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

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

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

4

1 回答 1

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();
于 2011-08-24T14:36:12.527 回答