Как начать форматирование "блока строки" в C #? - PullRequest
2 голосов
/ 11 апреля 2011

Мне нужно написать несколько запросов в моем коде на C #, и у меня возник вопрос о форматировании. Смотрите ниже:

    string sql = "SELECT * ";
    sql += "FROM HYT_User_Vehicle_Group_Assoc ";
    sql += "INNER JOIN HYT_Vehicle_Group ON HYT_Vehicle_Group.Vehicle_Group_No = HYT_User_Vehicle_Group_Assoc.Vehicle_Group_No ";

Исходя из фона PHP, я написал бы это на PHP:

$sql = "SELECT *
    FROM HYT_User_Vehicle_Group_Assoc
    INNER JOIN HYT_Vehicle_Group ON HYT_Vehicle_Group.Vehicle_Group_No = HYT_User_Vehicle_Group_Assoc.Vehicle_Group_No"; 

обратите внимание, как мне не нужно всегда писать sql += для каждой новой строки в строке? Есть ли какой-нибудь способ сказать C #, что я собираюсь начать «блок строки», чтобы мне не всегда приходилось набирать sql +=?

Ответы [ 4 ]

3 голосов
/ 11 апреля 2011
@"Try
this!"

At-sign :) Будет делать то, что вы хотите.

3 голосов
/ 11 апреля 2011

Yup - используйте дословный строковый литерал , поставив @ перед начальным ":

string sql = @"SELECT *
    FROM HYT_User_Vehicle_Group_Assoc
    INNER JOIN HYT_Vehicle_Group
    ON HYT_Vehicle_Group.Vehicle_Group_No = HYT_User_Vehicle_Group_Assoc.Vehicle_Group_No";

Обратите внимание, что это также удаляет экранирование с обратной косой чертой - одиниз тех случаев, когда это действительно полезно для регулярных выражений и путей к файлам Windows.Чтобы включить двойную кавычку в дословном строковом литерале, вы удваиваете его:

string text = "Jon says, ""Verbatim string literals."" And that's all.";

Для особенно больших блоков кода в виде текстаВероятно, я бы поместил их в отдельный встроенный ресурс - или использовал бы ORM, чтобы мне не требовался SQL для большей части доступа к данным:)

Для получения дополнительной информации о строках, строковых литералах (обычные)и дословно), escape-последовательности и т. д., см. мою статью на тему .

0 голосов
/ 11 апреля 2011

См. http://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx

Строковые литералы.

@"Here is my
multiline verbatim string"
0 голосов
/ 11 апреля 2011

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

sql = @"SELECT *
    FROM HYT_User_Vehicle_Group_Assoc
    INNER JOIN HYT_Vehicle_Group ON HYT_Vehicle_Group.Vehicle_Group_No = HYT_User_Vehicle_Group_Assoc.Vehicle_Group_No"; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...