7

我最近发现,当我在包含撇号的字段下执行 LINQ 选择时,它会使我的应用程序抛出异常。

DataRow[] newDr = this.ds.Tables["TableName"].Select("Name = '" + drData["Name"].ToString() + "'");

如果 drData["Name"] = "企业的钱"

I got an exception of "Syntax error: Missing operand after 'S' operator "

谁能告诉我如何保存它而不是替换它或删除它,好吗?

4

2 回答 2

20

您必须将单引号转义为 2 个单引号,可能还有其他特殊字符,因此您必须注意它们:

DataRow[] newDr = this.ds.Tables["TableName"]
                         .Select(string.Format("Name ='{0}'",drData["Name"].ToString().Replace("'","''")));

有关在过滤器字符串中转义特殊字符的更多示例(在Select方法中使用): 行过滤器字符串示例

于 2013-09-06T17:49:46.740 回答
7

它不是 LINQ Select,而是它的DataTable.Select方法。你得到的错误是因为字符',你需要用 double 转义它' '。简单的方法是将其替换为:

DataRow[] newDr = this.ds.Tables["TableName"]
                     .Select("Name = '" + drData["Name"].ToString().Replace("'", "''" + "'");

您可能会看到有关如何在 DataTable.Select 中转义字符的问题

于 2013-09-06T17:49:59.020 回答