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

时间:2020-03-18 14:18:40

标签: c# linq .net-core dynamic-linq

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

通过当前使用以下内容,我仅在第一列上进行搜索。

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

您已经猜到了,如果我删除了break语句,由于OR循环之间缺少foreach语句,因此不会返回任何结果。

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

1 个答案:

答案 0 :(得分:1)

使用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中的示例: enter image description here