LINQ 查询中添加括号以实现复杂条件
这段代码的目标是根据 postQuery.Keyword 的值在 postDo 中查找满足条件的帖子,并使用 Like 运算符进行模糊匹配。代码中的问题是 Or 操作符的优先级高于 Where 操作符,这会导致生成的 SQL 语句中没有括号,从而无法正确地执行查询。
为了解决这个问题,我们需要在 Where 操作符周围添加括号,如下所示:
postDo.Where(p => (p.Title.Like('%' + *postQuery.Keyword + '%') || p.OriginalContent.Like('%' + *postQuery.Keyword + '%')))
在这个代码中,我们使用了一个匿名函数来定义 Where 操作符的条件。函数中使用 p => 定义了当前遍历的帖子对象,并使用 || 操作符将 Title 和 OriginalContent 的匹配条件连接起来。
通过这种方式,我们可以确保 Where 操作符中的条件先被执行,然后再进行 Or 操作,从而生成包含括号的正确 SQL 语句。
注意:
Like操作符用于进行模糊匹配。%代表任意多个字符。*代表postQuery.Keyword的值。
通过对 Where 操作符添加括号,我们可以在 LINQ 查询中构建更复杂的条件,并生成符合预期的 SQL 语句。
原文地址: https://www.cveoy.top/t/topic/nPs1 著作权归作者所有。请勿转载和采集!