这段代码的目标是根据 postQuery.Keyword 的值在 postDo 中查找满足条件的帖子,并使用 Like 运算符进行模糊匹配。代码中的问题是 Or 操作符的优先级高于 Where 操作符,这会导致生成的 SQL 语句中没有括号,从而无法正确地执行查询。

为了解决这个问题,我们需要在 Where 操作符周围添加括号,如下所示:

postDo.Where(p => (p.Title.Like('%' + *postQuery.Keyword + '%') || p.OriginalContent.Like('%' + *postQuery.Keyword + '%')))

在这个代码中,我们使用了一个匿名函数来定义 Where 操作符的条件。函数中使用 p => 定义了当前遍历的帖子对象,并使用 || 操作符将 TitleOriginalContent 的匹配条件连接起来。

通过这种方式,我们可以确保 Where 操作符中的条件先被执行,然后再进行 Or 操作,从而生成包含括号的正确 SQL 语句。

注意:

  • Like 操作符用于进行模糊匹配。
  • % 代表任意多个字符。
  • * 代表 postQuery.Keyword 的值。

通过对 Where 操作符添加括号,我们可以在 LINQ 查询中构建更复杂的条件,并生成符合预期的 SQL 语句。

LINQ 查询中添加括号以实现复杂条件

原文地址: https://www.cveoy.top/t/topic/nPs1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录