英文:
Use Apostrophes in search query in datatable result to filter data
问题
I am getting data in one data collection. Now I want to filter it out based on designername value.
But the problem is that in the designername value, I am getting apostrophes, so because of that, it is breaking and not returning data.
Value I am getting in the designername column is this:
Men's Jewelry
Here, if you see in "Men," there are apostrophes, and because of that, I am not getting results.
Using the following line, I am trying to get filtered data.
DataRow[] dr = dtCollections2.Select("designername = '" + strDesigner + "'");
The error I am getting is this:
{"Message":"Syntax error: Missing operand after 's' operator.","StackTrace":" at System.Data.ExpressionParser.Parse()\r\n at System.Data.DataExpression..ctor(DataTable table, String expression, Type type)\r\n at System.Data.Select..ctor(DataTable table, String filterExpression, String sort, DataViewRowState recordStates)\r\n at System.Data.DataTable.Select(String filterExpression)\r\n at ","ExceptionType":"System.Data.SyntaxErrorException"})
英文:
I am getting data in one data collection. Now I want to filter it out based on designername value.
But problem is that in designername value I am getting apostrophes so because of that it is breaking and not returning data.
Value I am getting in desginername column is this :
Men's Jewelry
Here if you see in Men there is apostrophes and because of that I am not getting result.
Using below line I am trying to get filtered data.
DataRow[] dr = dtCollections2.Select("designername = '" + strDesigner + "'");
Error I am getting is this :
{"Message":"Syntax error: Missing operand after \u0027s\u0027 operator.","StackTrace":" at System.Data.ExpressionParser.Parse()\r\n at System.Data.DataExpression..ctor(DataTable table, String expression, Type type)\r\n at System.Data.Select..ctor(DataTable table, String filterExpression, String sort, DataViewRowState recordStates)\r\n at System.Data.DataTable.Select(String filterExpression)\r\n at "ExceptionType":"System.Data.SyntaxErrorException"})
答案1
得分: 2
Select 方法的文档 引用了此页面上的查询语法示例,从中我们可以看到单引号字符应该使用两个连续的单引号来转义。
字符串值应该用单引号
' '
括起来。如果字符串包含单引号'
,则需要双写该引号。dataView.RowFilter = "Name = 'John'" // 字符串值 dataView.RowFilter = "Name = 'John ''A'''" // 带单引号的字符串 "John 'A'" dataView.RowFilter = String.Format("Name = '{0}'", "John 'A'".Replace("'", "''"));
所以在你的情况下:
DataRow[] dr = dtCollections2.Select("designername = '" + strDesigner.Replace("'", "''") + "'")
英文:
The documentation for the Select method refers to this page for examples of the query syntax, from which we can see that single-quote characters should be escaped by using two of them in a row.
> String values are enclosed within single quotes ' '
. If the string contains single quote '
, the quote must be doubled.
>```
>[C#]
>dataView.RowFilter = "Name = 'John'" // string value
>dataView.RowFilter = "Name = 'John ''A'''" // string with single quotes "John 'A'"
>
>dataView.RowFilter = String.Format("Name = '{0}'", "John 'A'".Replace("'", "''"));
So in your case:
DataRow[] dr = dtCollections2.Select("designername = '" + strDesigner.Replace("'", "''") + "'")
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论