我的测试用例场景是关于搜索文本框和包含搜索结果的网格。
通过当前使用以下内容,我仅在第一列上进行搜索。
foreach (GridColumn s in columns)
{
data = data.Where(string.Format("{0}.Contains(@0)", s.PropertyName), searchValue);
break;
}
您已经猜到了,如果我删除了break语句,由于OR
循环之间缺少foreach
语句,因此不会返回任何结果。
如何使用Linq.Dynamic.Core
在多列中搜索单个值?
答案 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);