c# - 一次跨行中的所有项目的Linq搜索(.Contains)?
问题描述
有没有办法在 linq 中一次对所有行进行包含搜索,而不是将它们列出来。
目前我正在做
Data.Where(
x => x.Name.Contains(searchValue) ||
x.Address.Contains(searchValue) ||
x.Id.ToString().Contains(searchValue)... etc
我想做的是传入一个泛型并让它搜索行中的所有数据?
例如 Data.Where(x => row.Contains(searchValue))
解决方案
您可以使用反射,但它不利于性能
list.Where(x => x.GetType()
.GetProperties()
.Any(p =>
{
var value = p.GetValue(x);
return value != null && value.ToString().Contains("some string");
}));
编辑:就像法比奥所说,这将在内存中过滤列表,而不是在 sql 中。
推荐阅读
- tomcat - URL 中的两个连续点将 URL 导航向后移动一步
- javascript - 为什么 jQuery 验证显示单词“false”而不是我的自定义消息?
- python - 实现一个简单的插件管理器类,它能够注册需要不同参数的检查函数
- ios - 启用 https 时,iOS 应用程序无法 ATS 系统信任
- wordpress - WPBakery Page Builder 后端编辑器不工作
- mongodb - MongoDB Atlas 连接 - 流向主数据中心的流量
- excel - VBA 脚本的问题 - 查找使用网络共享打开了 excel 文件的用户
- c# - SHDocVw InternetExplorer.DocumentComplete 每次都不能正常工作
- node.js - mikro-orm CLI:找不到模块“ts-node”
- javascript - 我的节点服务器进行的第三方 API 调用的去抖动次数