如何通过迭代字符串搜索参数的集合来组合Linq'或'查询

Joh*_*ohn 1 c# linq linq-to-entities

我有一个基于字符串的搜索参数列表:

ie {"partialName1","partialName2","partialName3",...,"partialName(N)"}我永远不会知道N的大小是什么.

我想通过迭代这个字符串集合来编写一个Linq(Linq-to-Entities)"OR"查询,并编写一个等同于下面查询的查询:

var specialFolk = people.Where(p => p.Name.Contains("partialName1") || p.Name.Contains("partialName2") || p.Name.Contains("partialName3") || ... || p.Name.Contains("partialName(N)"));
Run Code Online (Sandbox Code Playgroud)

以下代码演示了我想要做的事情.但它不起作用,它只是我想用于以可组合方式构建OR查询的概念的说明

        List<string> searchPhrases = searchPhraseGiveToUsFromAbove;

        IQueryable<Person> personQuery;
        foreach(string searchPhrase in searchPhrases)
        {
            personQuery = personQuery.Where(p=>p.Name.Contains(searchPhrase))
        }
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?

Hab*_*bib 6

你应该以相反的方式比较它:

var query = personQuery.Where(p => searchPhrases.Any(r=> p.Name.Contains(r));
Run Code Online (Sandbox Code Playgroud)