gpt4 book ai didi

asp.net - 如何在多列中搜索相同的搜索字符串?

转载 作者:行者123 更新时间:2023-12-04 06:27:24 27 4
gpt4 key购买 nike

我正在从 EF 数据模型中的文本框控件中搜索字符串输入。有人可以帮我在代码文件中构造 where 子句来做到这一点。
我在代码中尝试了以下代码,即使它在我输入搜索字符串并提交搜索时编译会引发错误。

Where("it.[CaseName] like '%'" + searchString +
"'%' or it.[CaseNumber] like '%'" + searchString +
"'%' or it.[AppRegNumber] like '%'" + searchString +
"'%' or it.[SSNo] like '%'" + searchString + "'%'")

当在 EntityDataSource 控件标记中使用相同的 where 子句时,它会正确接受和搜索。
我正在更改我的页面以使用 ObjectDataSource 控件连接到业务逻辑层类,而不是直接连接到 EDM 数据模型。

最佳答案

如果你想使用 Where ObjectQuery 的查询生成器方法(我认为这就是您在问题中使用的内容),您需要从查询表达式中删除内部单引号:

Where("it.[CaseName] like '%" + searchString +
"%' or it.[CaseNumber] like '%" + searchString +
"%' or it.[AppRegNumber] like '%" + searchString +
"%' or it.[SSNo] like '%" + searchString + "%'")

或作为参数化查询:
Where("it.[CaseName] like @search" +
" or it.[CaseNumber] like @search" +
" or it.[AppRegNumber] like @search" +
" or it.[SSNo] like @search",
new ObjectParameter("search", string.Concat("%", searchString, "%")))

编辑

如果 searchString,请不要使用第一个版本来自网页上的用户输入,因为此版本易受 的攻击SQL 注入(inject) (在搜索引擎中输入这个词进行解释)。而是在第二个版本中使用参数化查询。

关于asp.net - 如何在多列中搜索相同的搜索字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874005/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com