[英]How to achieve multi-line strings in C#; an alternative to VB's XML Literals?
我在vb.net中有一个项目,它使用XML Literals
来处理大块SQL,如下所示:
Dim SQL As String = <a> Use test
alter table BarFoo alter column CouponName nvarchar(328)
alter table Foo alter column IngredientName nvarchar(328)
alter table Bar alter column IngredientShortDescription nvarchar(328)
alter table FooBar alter column ItemName nvarchar(328) </a>.Value
但似乎无法找到它的等价物C#任何建议?
您可以使用@
前缀字符串常量来跨越多行。 唯一需要转义的是引号(使用双引号)。
string SQL = @"Use test
alter table BarFoo alter column CouponName nvarchar(328)
alter table Foo alter column IngredientName nvarchar(328)
alter table Bar alter column IngredientShortDescription nvarchar(328)
alter table FooBar alter column ItemName nvarchar(328)";
看来你试图模仿C#中逐字字符串的行为。 这些文字以字符串前面的leadin @
开头,让编译器不处理字符转义。 你需要的唯一角色逃脱是逃避"
与""
相反。
所以你的查询看起来像
string query = @"
Use test
alter table BarFoo alter column CouponName nvarchar(328)
alter table Foo alter column IngredientName nvarchar(328)
alter table Bar alter column IngredientShortDescription nvarchar(328)
alter table FooBar alter column ItemName nvarchar(328)";
这包括换行符\\n
以及任何前导间距。 在SQL中,空白只是为了可读性,但是要记住白色空间是用这些文字完全保留的。
首先 - 使用多行字符串文字
String sql = @"Use test
alter table BarFoo alter column CouponName nvarchar(328)
alter table Foo alter column IngredientName nvarchar(328)
alter table Bar alter column IngredientShortDescription nvarchar(328)
alter table FooBar alter column ItemName nvarchar(328)"
第二 - 如果您需要任何字符串参数化,请让字符串插值为您工作:
String databaseName = "test"
String tableName = "BarFoo"
String sql = @"Use \{databaseName}
alter table \{tablaName} alter column CouponName nvarchar(328)"
String.Format("Use {0}; alter table {1}", databaseName, tableName)
这样的谜题String.Format("Use {0}; alter table {1}", databaseName, tableName)
第三 - Visual Basic也有多行字符串文字。 请不要再使用XML解决方法了。
在VB中,使用
Dim sql As String = "Use test
alter table BarFoo alter column CouponName nvarchar(328)
alter table Foo alter column IngredientName nvarchar(328)
alter table Bar alter column IngredientShortDescription nvarchar(328)
alter table FooBar alter column ItemName nvarchar(328)"
'and with interpolated strings:
Dim when As String = "since Visual Studio 2015"
Dim note As String = $"String interpolation works {when}, see this VB-specific syntax!"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.