[英]How can I strip a single quote from a dataTable.Select( ) query in C#?
所以我有一個經銷商名稱列表,我正在我的數據表中搜索它們——問題是,一些傻瓜必須被命名為“Young's”——這會導致錯誤。
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 + "'");
}
有人有什么好主意嗎?
謝謝! 托德
我通常使用雙單引號來表示一個,即
DealerName = 'Young''s'
試試看
您可以使用稱為逐字運算符的@ 運算符,這意味着拉丁文中的文字。 它不會對字符串中的字符進行任何解釋,否則這些字符將意味着什么。
最終,您可能要考慮使用參數化查詢。 這將解決您的問題以及您可能尚未想到的其他問題。 我發現這個鏈接詳細說明了原因和方式。
雙單引號將解決問題,但需要額外注意:您的“else”塊是多余的。
你可以通過這樣做來完成同樣的事情:
DataRow[] drs;
if (dealerName.Contains("'"))
{
string dealerSearch = dealerName;
dealerSearch = dealerSearch.Replace("'", "''");
}
drs = dtDealers.Select("DealerName = '" + dealerName + "'");
drs = dtDealers.Select("DealerName = '" + dealerName.Replace("'", "\\'") + "'");
您需要轉義\
: dealerSearch.Replace("'", "\\'")
(或使用@
文字)
您的\
被視為 C# 轉義,不會出現在實際字符串中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.