c# - 实体框架搜索多个单词
问题描述
我想用 Entity Framework (EF6) 创建一个搜索查询。为了更好地理解,我将举例说明。
我有 5 个单词(字符串)。
“我的名字是杰克”
“我的年龄是35岁”
“我的工作是开发人员”
“你叫什么名字”
“中国人口超过10亿”
现在我想创建一个具有以下结果的 EF 查询搜索:
- 当搜索
My name
结果是数字 1 和 2 以及 3 和 4 - 当搜索是
is
结果是数字 1 和 2 和 3 和 4 和 5
这是我的查询:
var query = (from q1 in _db.QuestionTbl where q1.questionTitle.Any(a => q1.questionTitle.Contains("search")) select q1).ToList();
但我无法得到正确答案。
解决方案
@jonaChaz 的答案有效,但在一个重要方面效率低下:它将为搜索中的每个术语生成 1 个到 SQL 的往返查询。如果你改用这种方式编写它,EntityFramework 会将其编译为单个查询/往返服务器,并且可以节省大量开销,尤其是对于多词搜索:
string search = "My name";
var terms = search.Split(' ');
var results = _db.QuestionTb1
.Where(q => terms.Any(term => q.questionTitle.Contains(term)))
.ToList();
推荐阅读
- java - 为什么 String.replaceAll() 在 Java 8 和 Java 9 中的工作方式不同?
- python-3.x - Tkinter 动态 TreeView 行调整大小
- oracle - 索引范围分区 Oracle
- android - 为原生应用持续部署到 Play 商店
- r - R 扫视分析
- java - JVM 和 .NET 运行时的编程语言
- css - 引导网格袋容器忽略边界
- javascript - 如何将文件夹导入为 Vue 组件
- python - Pandas 在 2 个数据帧上使用 netaddr 来查看 ip 列是否属于具有布尔结果的 cidr 列
- python - python中与pc交互(鼠标+截图)