如何在C#中实现多行字符串;VB'的替代方案;什么是XML文本?

如何在C#中实现多行字符串;VB'的替代方案;什么是XML文本?,c#,sql,sql-server,vb.net,C#,Sql,Sql Server,Vb.net,我在vb.net中有一个项目,用于处理大型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 nvarcha

我在vb.net中有一个项目,用于处理大型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
Dim SQL As String=使用测试
alter table BarFoo alter COUNPONNAME nvarchar列(328)
alter table Foo alter列IngredientName nvarchar(328)
alter table Bar alter列INGREDIENTSHORTSCRIPTION nvarchar(328)
alter table FooBar alter列ItemName nvarchar(328).Value
但似乎找不到C的等价物#
有什么建议吗?

您可以在字符串常量前面加上
@
以跨越多行。唯一需要转义的是引号(使用双引号)


你似乎在试图模仿C#中a的行为。这些文本以字符串前面的一个前导
@
开头,以使编译器不处理字符转义。唯一需要的字符转义是用
转义

所以您的查询看起来像

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中,空格只是为了可读性,但最好记住,这些文字完全保留了空格。

首先- 使用多行字符串文字

stringsql=@“使用测试
alter table BarFoo alter COUNPONNAME nvarchar列(328)
alter table Foo alter列IngredientName nvarchar(328)
alter table Bar alter列INGREDIENTSHORTSCRIPTION nvarchar(328)
alter table FooBar alter column ItemName nvarchar(328)”
  • 请注意,字符串中的所有换行符和每行开头的空白都将保留


第二,如果需要对字符串进行任何参数化,请让字符串插值为您工作:

String databaseName=“测试”
String tableName=“BarFoo”
字符串sql=@“使用\{databaseName}”
alter table\{tablaName}alter CouponName nvarchar列(328)”
  • 再也没有类似
    String.Format(“使用{0};更改表{1}”、数据库名、表名”这样的难题了)


第三—— Visual Basic也已经有多行字符串文本。请不要再使用XML解决方法。
在VB中,使用

Dim sql As String=“使用测试
alter table BarFoo alter COUNPONNAME nvarchar列(328)
alter table Foo alter列IngredientName nvarchar(328)
alter table Bar alter列INGREDIENTSHORTSCRIPTION nvarchar(328)
alter table FooBar alter column ItemName nvarchar(328)”
'并使用插值字符串:
作为String=“自Visual Studio 2015起”时变暗
Dim note As String=$”字符串插值工作{when},请参见此VB特定语法!"

不清楚您想做什么。这意味着什么
.Value
?逐字字符串文字从
@
开始。就像
字符串正则表达式=@“[\w]*”
您正在使用(滥用)内嵌XML,VB支持而C不支持。至于C,Eser让您走上了正确的道路。在这里使用
字符串SQL=@“您的多行文本";
+1
来自我!我喜欢这个问题,因为它教会了一群对VB.NET一窍不通的人一些他们不知道的东西?“一直都是。答案总是一样的:因为从来没有人设计、指定、实现、测试、记录和发布过该功能。所有这六件事都是实现功能所必需的。所有这些都花费了大量的时间、精力和金钱。功能并不便宜,考虑到我们有限的时间、精力和资金预算,我们努力确保我们只提供那些能够为用户带来最大利益的功能。”
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)";