Как я могу удалить одну цитату из запроса dataTable.Select () в C #? - PullRequest
2 голосов
/ 03 июня 2011

Итак, у меня есть список дилеров, и я ищу их в своей таблице данных - проблема в том, что какой-то хулиган ДОЛЖЕН быть назван '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 + "'");
                }

У кого-нибудь есть хорошие идеи?

Спасибо!Тодд

Ответы [ 6 ]

10 голосов
/ 03 июня 2011

Я обычно использую двойные одинарные кавычки для обозначения одного, то есть

DealerName = 'Young''s'

Попробуйте это

4 голосов
/ 03 июня 2011

Вы можете использовать оператор @, называемый дословным оператором, что означает литерал на латинском языке. Он не будет интерпретировать символы в строке, которые в противном случае означали бы что-то.

3 голосов
/ 03 июня 2011

В конечном итоге вы можете рассмотреть возможность использования параметризованного запроса.Это решит вашу проблему и некоторые другие, о которых вы, возможно, еще не подумали.Я нашел эту ссылку , в которой подробно описываются причины и причины.

2 голосов
/ 03 июня 2011

Двойная одинарная кавычка решит проблему, но дополнительное примечание: ваш блок else еще избыточен.

Вы можете сделать то же самое, выполнив следующее:

 DataRow[] drs;
                if (dealerName.Contains("'"))
                {
                    string dealerSearch = dealerName;
                    dealerSearch = dealerSearch.Replace("'", "''");
                }
                drs = dtDealers.Select("DealerName = '" + dealerName + "'");
1 голос
/ 03 июня 2011
drs = dtDealers.Select("DealerName = '" + dealerName.Replace("'", "\\'") + "'");
0 голосов
/ 03 июня 2011

Вам нужно экранировать \: dealerSearch.Replace("'", "\\'") (или использовать @ литерал)

Ваш \ рассматривается как escape C # и не отображается в реальной строке.

...