Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ和OR标准_C#_.net_Linq_Entity Framework_Predicatebuilder - Fatal编程技术网

C# LINQ和OR标准

C# LINQ和OR标准,c#,.net,linq,entity-framework,predicatebuilder,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)) } 但我要的不是and运算符。我想要一个电话或接线员。我该怎么做?如何在代码中创建复杂的条件树?

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

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

foreach(string filter in filters)
{
   query = query.Where(x => x.FilterValue.Contains(filter))
}
但我要的不是and运算符。我想要一个电话或接线员。我该怎么做?如何在代码中创建复杂的条件树?

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

还发现这很有用:有时从另一个方向来比较方便:

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

可能是重复的感谢史蒂文。这回答了我的问题。