带有 Or 的 IQueryable Where 扩展方法

Ton*_*ell 5 c# linq iqueryable

复制:

如何将 OR 运算符动态添加到 LINQ 中的 WHERE 子句

我想遍历一个字符串值数组并构建一个 linq 表达式

列表中的每个项目都被 OR 运算在一起。

string[] search = new string[]{"A", "B", "C"};
foreach (string item in filterValues)
{
    searchQuery = searchQuery.Where(s => s.Name.Contains(item));
}
Run Code Online (Sandbox Code Playgroud)

上面的代码搜索“A”“B”“C”

我想搜索“A”“B”“C”。

我知道如何用 Linq 做到这一点,但我想使用扩展方法来完成同样的事情。

Joe*_*ung 0

var filterValues = new[] { "A", "B", "C" };

var values =
    (from item in filterValues
     from value in searchQuery
     where value.Name.Contains(item)
     select value)
     .Distinct();
Run Code Online (Sandbox Code Playgroud)