2 votes

Comment commencer le formatage "bloc de chaîne" en C# ?

Je dois écrire quelques requêtes dans mon code C# et j'ai une question sur le formatage. Voir ci-dessous :

    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 ";

Comme je suis issu du monde du PHP, c'est ainsi que je l'aurais écrit en 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"; 

Remarquez que je ne dois pas toujours écrire un sql += pour chaque nouvelle ligne de la chaîne ? Existe-t-il un moyen d'indiquer à C# que je vais commencer un "bloc de chaîne", de sorte que je ne doive pas toujours taper sql += ?

3voto

Jon Skeet Points 692016

Ouaip - utilisez un littéral de la chaîne de caractères verbatim en mettant @ avant le " :

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";

Notez que cela supprime également l'échappement avec une barre oblique inverse - l'une des fois où cela est vraiment utile est pour les expressions régulières et les chemins de fichiers Windows. Pour inclure un guillemet double dans une chaîne littérale verbatim, il faut le doubler :

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

Pour les blocs de code-as-text particulièrement volumineux, je les placerais probablement dans une ressource intégrée distincte, ou j'utiliserais un ORM pour ne pas avoir besoin de SQL pour la majorité des accès aux données :)

Pour plus d'informations sur les chaînes de caractères, les chaînes littérales (régulières et textuelles), les séquences d'échappement, etc. article sur le sujet .

3voto

Kieren Johnstone Points 19499
@"Try
this!"

At-sign :) Je ferai ce que vous voulez.

0voto

WorldIsRound Points 1259

Vous pouvez envisager d'utiliser l'attribut @ pour les chaînes de caractères s'étendant sur plusieurs lignes. Voir ce pour plus de détails sur l'utilisation.

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";

0voto

trickdev Points 587

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

Les littéraux de chaîne verbatim.

@"Here is my
multiline verbatim string"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X