Подтвердить что ты не робот

Как иметь дело с кавычками в кавычках в С#?

Основной вопрос:
Есть ли способ вставить двойную кавычку ONE в строку в С#

информация:
Я пытаюсь выполнить что-то вроде следующего SQL Выбрать в С#

SELECT Name FROM Production.Product
WHERE CONTAINS(Name, '"chain*"');  

Я интерпретировал это так:

string selectCommand= @"select Name from Production.Products  
WHERE contains (Name,'\"" + chain+ "*\"')");

Но я возвращаю строку как:

"ГДЕ содержит (Name, '\" chain\ "')"

Я тоже пробовал в этом SOF question, но он тоже не работает!:

string selectCommand= @"select Name from Production.Products  
where contains (doc.document_name,'"""""" + full + """"""')");
4b9b3361

Ответ 1

Это потому, что у вас есть @ в начале строки

string selectCommand= "select Name from Production.Products where contains (doc.document_name,\'\"" + full + "*\"\');";

Вам в основном нужно избежать ' и "

Ответ 2

Если вы посмотрите на документацию для строковых литералов, вы обнаружите, что есть два формата. Обычный формат, в котором вам нужно избежать всех следующих символов:

', ", \, 0, a, b, f, n, r, t, u, U, x, v.

Итак, ваша строка должна быть записана следующим образом:

string query = "WHERE CONTAINS(Name, \'\"chain*\"\');";

или дословные литералы, которым предшествует символ "at", где вы избегаете двойных кавычек "удвоением":

string query = @"WHERE CONTAINS(Name, '""chain*""');";

Так что просто отбросьте "@" из вашей строки, и это сработает.

Ответ 3

Просто отпустите @в начале строки, и она должна работать.

Причина, по которой обратная косая черта сохраняется в вашей строке, заключается в том, что вы сказали строке не заменять экранированные последовательности символов, поставив @перед строкой. Удаление @позволит вам экранировать экранированные символы.

Ответ 4

Что-то вроде этого может быть:

string full = "abc";
string selectCommand= @"select Name from Production.Products where contains (doc.document_name,'""" + full + "*\"')";

Ответ 5

"@" вам не поможет. Удалите его, и все будет в порядке. Это должно работать:

Console.WriteLine("...(doc.document_name,'\"" + full + "*\"')");

Если вы действительно хотите сохранить "@", попробуйте следующее:

Console.WriteLine(@"...(doc.document_name,'""" + full + "*\"')");