【问题标题】:Search single value in multiple columns with Linq.Dynamic.Core使用 Linq.Dynamic.Core 在多列中搜索单个值
【发布时间】:2020-03-18 14:18:40
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 怎么样,if (data != null && data.Any()){break;}
  • @Sajid Still 如果第一列中不存在 searchValue,则 foreach 循环将中断。

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


【解决方案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 中的示例:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 2019-11-13
    相关资源
    最近更新 更多