2011-04-11 14 views
2

我必須在我的C#代碼中編寫一些查詢,並對格式有疑問。請看下圖:如何開始在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 +=

回答

3

燁 - 通過把@領先「之前使用verbatim string literal

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,所以我不需要爲majori使用SQL數據訪問權限:)

有關字符串,字符串文字(常規和逐字),轉義序列等的更多信息,請參閱我的article on the topic

+0

當你快。 – StriplingWarrior 2011-04-11 15:57:41

3
@"Try 
this!" 

At-sign :)會做你想做的。

+0

'@'不是&符號('&');它是符號。 – 2011-04-11 15:59:57

+0

我認爲&符號是&&不是'@' – CodesInChaos 2011-04-11 16:00:08

+0

無意義@是&符號,&顯然是蠕蟲。哎呀..:X – 2011-04-11 16:01:06

0

您可以考慮對跨越多行的字符串使用@屬性。有關使用的更多詳細信息,請參閱this鏈接。

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