Как избежать двойных кавычек в строках С#?

В Ruby можно использовать строки без необходимости экранировать двойные кавычки в строке, например Q/Some my string with «двойные кавычки»/

Возможно ли с С# использовать строку без необходимости избегать двойных кавычек? По уважительной причине мне нужно написать встроенный SQL, и очень раздражает избегать двойных кавычек каждый раз, когда я помещаю SQL-запрос из консоли БД в код C#.

Я знаю, что можно использовать \" или "" как одну двойную кавычку. Но можно ли избежать необходимости экранировать двойные кавычки?


person Zelid    schedule 03.08.2012    source источник
comment
Проще говоря. Нет. Вы можете использовать символ @, чтобы остановить это + [новая строка для ясности кода] длинная строка, которую вы не хотите размещать в одной строке; но нет никакого способа избежать побега.   -  person Paul Sullivan    schedule 03.08.2012


Ответы (3)


Нет, это невозможно в C#. Вы можете записать свой SQL в отдельный файл, а затем прочитать его оттуда.

person Darin Dimitrov    schedule 03.08.2012

Нет, в принципе. У вас есть выбор "foo \" bar" или @"foo "" bar", оба из которых вы упомянули. Однако, честно говоря, я редко нахожу " необходимым в SQL; у вас есть ' для литеральных строк и [ / ] для имен объектов/столбцов - конечно, это может быть просто потому, что я обычно использую SQL Server.

Единственная альтернатива, которая не связана с экранированием, заключается в перемещении SQL во внешний файл ресурсов, например, в текстовый файл. Однако это, вероятно, более болезненно, чем просто использование "".

person Marc Gravell    schedule 03.08.2012
comment
Я использую PostgreSQL, где имена CamelCase следует заключать в двойные кавычки. - person Zelid; 03.08.2012
comment
@Zelid Zelid да, я подозревал, что вы можете использовать другой движок БД (я редко сталкиваюсь с этой проблемой). Извините, я думаю, вы должны выбрать, какой вариант наименее-хуже. - person Marc Gravell; 03.08.2012

По уважительной причине мне нужно написать встроенный SQL, и очень раздражает избегать двойных кавычек каждый раз, когда я помещаю SQL-запрос из консоли БД в код C#.

Если вы пишете встроенный Sql-запрос, вам не нужно беспокоиться о кавычках, если вы передали значения через SqlParameters. Таким образом, вы не увидите надоедливых двойных кавычек повсюду, и даже ваш запрос будет защищен от Sql Injection.

person HatSoft    schedule 03.08.2012
comment
Я использую Massive в качестве облегченной библиотеки доступа к БД. Он всегда использует экранирование параметров. Мне нужно использовать двойные кавычки в именах столбцов и таблиц в PostgreSQL, когда я использую имена CamelCase. - person Zelid; 03.08.2012
comment
@Zelid, о, в таком случае я согласен, что будет раздражать видеть двойные кавычки везде, и я не думаю, что у вас есть другой вариант - person HatSoft; 03.08.2012
comment
Да, я использую EF Core, и все проходит через это, и у меня есть one off case, где просто проще использовать SQL (например, отчет, который я написал), и мне кажется, что добавить ресурс в проект, прочитать его и т. Д. ... только для этого - person Max Carroll; 05.08.2020