簡體   English   中英

如何從 C# 中的 dataTable.Select( ) 查詢中去除單引號?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM