SQL查询未按预期执行:Visual Studio

SQL查询未按预期执行:Visual Studio,sql,vb.net,visual-studio-2012,Sql,Vb.net,Visual Studio 2012,我有一个程序,通过查询从数据库中提取搜索结果来填充页面。用户可以从下拉菜单中选择多个选项,它只返回包含特定选择的结果,但是当我尝试使用它时,它返回不包含用户选择的结果。这里是我使用的一个查询,其他查询都非常非常相似,遇到了相同的问题 Dim o=来自myContext.Competitions.IncludeCodeJusticeBranches.IncludeCodeJusticeLocations.IncludeCodeCompetitionTypes.IncludeCodePosition

我有一个程序,通过查询从数据库中提取搜索结果来填充页面。用户可以从下拉菜单中选择多个选项,它只返回包含特定选择的结果,但是当我尝试使用它时,它返回不包含用户选择的结果。这里是我使用的一个查询,其他查询都非常非常相似,遇到了相同的问题

Dim o=来自myContext.Competitions.IncludeCodeJusticeBranches.IncludeCodeJusticeLocations.IncludeCodeCompetitionTypes.IncludeCodePositionTypes.IncludeCompetitionPositions中的c_ 其中pstrCompNum为Nothing或lse c.comp_number=pstrCompNum_ pstrCompYear等于零或等于c.comp_number.Length 8和c.comp_number.Substring6,2=strYear_ pstrCompTypeId为Nothing或lse c.CodeCompetitionTypes.code\u ct\u id=CIntpstrCompTypeId_ pstrBranchId什么都不是,或者lse c.CodeJusticeBranches.code_branch_id=CIntpstrBranchId_ pstrPosTypeId什么也不是,或者lse c.CodePositionTypes.code_pos_type_id=CIntpstrPosTypeId_ 按c.公司编号订购_ 选择c 如果o.计数>100,则 抛出新错误例外您的搜索返回了100多个比赛-请缩小搜索范围 其他的 返回o.ToList 如果结束 数据库的设置方式,如果没有选择年份,如我只选择branchId、PosTypeId或CompTypeId,则会有100多个结果,因此不会返回列表。这不是问题所在。当选择了一年以及我们忽略的其他参数CompNum时,问题就出现了,因为我们需要的是多个结果,而不是特定的Num

所发生的是,该列表将包含该年的所有元素,甚至不查看其他参数

例如,如果我要求它在2019年查找分支为1、PosType为2、compType为3的所有元素,它将在2019年返回所有元素。它将忽略其他搜索条件


如有任何建议,将不胜感激。谢谢。

在pstrCompYear筛选器之前和之后添加括号,这样Or不会影响其余条件

pstrCompYear等于零或等于c.comp_number.Length 8和c.comp_number.Substring6,2=strYear_
可能是关于运算符优先级的问题。记住并先于或。要更改优先级,请使用括号。