Ответ 1
Это потому, что у вас есть @
в начале строки
string selectCommand= "select Name from Production.Products where contains (doc.document_name,\'\"" + full + "*\"\');";
Вам в основном нужно избежать '
и "
Основной вопрос:
Есть ли способ вставить двойную кавычку 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 + """"""')");
Это потому, что у вас есть @
в начале строки
string selectCommand= "select Name from Production.Products where contains (doc.document_name,\'\"" + full + "*\"\');";
Вам в основном нужно избежать '
и "
Если вы посмотрите на документацию для строковых литералов, вы обнаружите, что есть два формата. Обычный формат, в котором вам нужно избежать всех следующих символов:
', ", \, 0, a, b, f, n, r, t, u, U, x, v.
Итак, ваша строка должна быть записана следующим образом:
string query = "WHERE CONTAINS(Name, \'\"chain*\"\');";
или дословные литералы, которым предшествует символ "at", где вы избегаете двойных кавычек "удвоением":
string query = @"WHERE CONTAINS(Name, '""chain*""');";
Так что просто отбросьте "@" из вашей строки, и это сработает.
Просто отпустите @в начале строки, и она должна работать.
Причина, по которой обратная косая черта сохраняется в вашей строке, заключается в том, что вы сказали строке не заменять экранированные последовательности символов, поставив @перед строкой. Удаление @позволит вам экранировать экранированные символы.
Что-то вроде этого может быть:
string full = "abc";
string selectCommand= @"select Name from Production.Products where contains (doc.document_name,'""" + full + "*\"')";
"@" вам не поможет. Удалите его, и все будет в порядке. Это должно работать:
Console.WriteLine("...(doc.document_name,'\"" + full + "*\"')");
Если вы действительно хотите сохранить "@", попробуйте следующее:
Console.WriteLine(@"...(doc.document_name,'""" + full + "*\"')");