如何从C#中的dataTable.Select()查询中删除单引号?

时间:2011-06-03 00:12:25

标签: c# datatable.select

所以我有一个经销商名单列表,我在我的数据表中搜索它们 - 问题是,有些傻瓜被命名为'Young'' - 这会导致错误。

drs = dtDealers.Select("DealerName = '" + dealerName + "'");

所以我尝试更换字符串(虽然它对我没用 - 也许我不知道如何使用替换...)

 DataRow[] drs;
                if (dealerName.Contains("'"))
                {
                    string dealerSearch = dealerName;
                    dealerSearch = dealerSearch.Replace("'", "\'");
                    drs = dtDealers.Select("DealerName = '" + dealerSearch + "'");
                }
                else
                {
                    drs = dtDealers.Select("DealerName = '" + dealerName + "'");
                }

有人有什么好主意吗?

谢谢! 托德

6 个答案:

答案 0 :(得分:10)

我通常用双引号来表示一个,即

DealerName = 'Young''s'

试试

答案 1 :(得分:4)

您可以使用名为verbatim运算符的@运算符,这意味着拉丁语中的文字。它不会对字符串中的字符进行任何解释,否则就会产生某种意义。

答案 2 :(得分:3)

最终,您可能需要考虑使用参数化查询。这将解决您的问题以及您可能还没有想到的其他一些问题。我找到this link详细说明了原因和方法。

答案 3 :(得分:2)

双单引号将解决问题,但需要额外注意:您的“其他”块是多余的。

你可以通过这样做完成同样的事情:

 DataRow[] drs;
                if (dealerName.Contains("'"))
                {
                    string dealerSearch = dealerName;
                    dealerSearch = dealerSearch.Replace("'", "''");
                }
                drs = dtDealers.Select("DealerName = '" + dealerName + "'");

答案 4 :(得分:1)

drs = dtDealers.Select("DealerName = '" + dealerName.Replace("'", "\\'") + "'");

答案 5 :(得分:0)

您需要转义\dealerSearch.Replace("'", "\\'")(或使用@字面值)

您的\被视为C#转义符,不会出现在实际字符串中。