首页 > 解决方案 > 实体框架搜索多个单词

问题描述

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

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

  1. “我的名字是杰克”

  2. “我的年龄是35岁”

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

  4. “你叫什么名字”

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

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

这是我的查询:

var query = (from q1 in _db.QuestionTbl where q1.questionTitle.Any(a => q1.questionTitle.Contains("search")) select q1).ToList();

但我无法得到正确答案。

标签: c#entity-frameworkasp.net-coreentity-framework-6

解决方案


@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();

推荐阅读