使用 Linq.Dynamic.Core 在多列中搜索单个值

Search single value in multiple columns with Linq.Dynamic.Core

我的测试用例场景是关于搜索文本框和带有搜索结果的网格。

目前使用以下内容,我只搜索第一列。

foreach (GridColumn s in columns)
{
   data = data.Where(string.Format("{0}.Contains(@0)", s.PropertyName), searchValue);
   break; 
}

正如您已经猜到的那样,如果我删除 break 语句,则不会返回任何结果,因为 foreach 循环之间缺少 OR 语句。

如何使用 Linq.Dynamic.Core 在多个列中搜索单个值?

使用 System.Linq.Dynamic.Core 你可以使用这样的代码:

var xx = new [] { "ax", "bx", "cy", "dz" };

var columns = new[] { "x", "y" };

string query = string.Join(" or ", columns.Select(c => $"it.Contains(\"{c}\")"));

var result = xx.AsQueryable().Where(query);

LinqPad 中的示例: