首页 > 解决方案 > 使用 Linq.Dynamic.Core 在多列中搜索单个值

问题描述

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

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

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

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

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

标签: c#linq.net-coredynamic-linq

解决方案


使用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 中的示例: 在此处输入图像描述


推荐阅读