c# - 使用 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
?
解决方案
使用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);
推荐阅读
- java - 没有使用测试运行器 JUnit5 找到测试
- javascript - 为什么我在我的 vue.js 模板中收到无效的表达式?
- ios - 我的精灵节点不会出现在我的场景中
- python - 设计选择:如何用 100k+ 向量包装大文件
- node.js - 如何提供一个非常基本的节点服务器来为本地测试提供 web 组件?
- django - 模型表单无法验证和发布
- javascript - 如何在javascript(js)中将文本输入转换为元素输入?
- javascript - JavaScript 递归:使用递归获取数组的长度而不访问其长度属性
- reactjs - SearchIcon 上的媒体查询不起作用。Material-UI, React
- ponyorm - 聚合的查询语法不像宣传的那样工作