c# - Entity Framework 搜索多个词

标签 c# entity-framework asp.net-core entity-framework-6

我想使用 Entity Framework (EF6) 创建搜索查询。为了更好地理解,我将举例说明。

我有 5 个单词(字符串)。

  1. “我叫 jack ”

  2. “我今年35岁”

  3. “我的工作是开发人员”

  4. “你叫什么名字”

  5. “中国人口超过10亿”

现在我想创建一个具有以下结果的 EF 查询搜索:

  • 当搜索我的名字时,结果是数字 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();

关于c# - Entity Framework 搜索多个词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56941037/

相关文章:

c# - 使用 TransactionScope 和 SqlCommand 保持数据库同步

owin - Asp.net 5 是否带有开箱即用的 OWIN 还是我们需要安装它?

c# - 从显式类型化的 ASP.NET Core API Controller (不是 IActionResult)返回 404

asp.net-core - ASP.NET Core 6 应用程序无法在 Windows 11 ARM 操作系统中的 IIS 上启动

c# - 如何在 C# List 中存储 IP 地址列表以使其也可以搜索子网?

c# - .cshtml 文件中的 Razor - 添加额外的 'if' 语句会出错

c# - 使用流通过 Json.NET 创建 BSON 字节数组(文件格式)

c# - 在 asp.net mvc View 模型上抑制来自 Resharper 的可能的空引用异常消息

entity-framework - 使用 EF 4 和 DDD 的最佳方法是什么

entity-framework - 自加载实体以来,实体可能已被修改或删除