VB.Net 到 C# 转换 <sql></sql>
VB.Net to C# Conversion <sql></sql>
这在 VB.Net
中有效
Dim sSQL As String
sSQL = <sql>MySQLQueryHere</sql>.Value
但是,这在 C# 中不起作用
string sSQL = "";
sSQL = <sql>MySQLQueryHere</sql>.Value;
以下部分在构建后显示错误。
sSQL = <sql>MySQLQueryHere</sql>.Value;
对我做错了什么有什么建议吗?
这是一个 XML 文字,它们在 C# 中不受支持。在编写 SQL 查询时,它们经常在 VB 中使用,以允许将文本拆分为多行,而不必使用大量引号和符号混淆内容。 VB 中不再需要它们,因为 VB 2015 及更高版本支持多行字符串文字。 C# 还支持多行字符串文字,而且我认为支持时间更长,尽管我不确定从哪个版本开始。
这是使用 XML 文字的 VB 代码示例:
Dim sql = <sql>
SELECT *
FROM MyTable
</sql>
Dim query = sql.Value 'This is a String
这是使用多行字符串文字的等效 VB:
Dim query = "SELECT *
FROM MyTable"
这是等效的 C# 代码:
var query = @"SELECT *
FROM MyTable";
在 C# 代码中,请注意,您必须使用逐字字符串文字才能将其分布在多行中。逐字字符串文字是一个前缀为 @
的字符串文字,表示引号之间的每个字符都应按字面意思理解。这些通常用于文件和文件夹路径,因此您无需转义所有斜线。不过,这确实意味着您无法转义文本中的任何内容。
另请注意,在所有三种情况下,每行开头的空格也作为文本的一部分包含在内。这对 SQL 代码来说没什么大不了的,但有时会出现问题,在这种情况下,您必须将所有文本推到编辑器的左侧。这看起来不太好,但这是一个必要的权衡。
我还应该指出,XML 文字代码并不完全等同于其他代码。严格来说,第一个代码片段必须像这样才能等效:
Dim sql = <sql>SELECT *
FROM MyTable</sql>
Dim query = sql.Value 'This is a String
不过在我看来,XML 文字通常写成 XML 更容易阅读,但没有理由在多行字符串文字中包含额外的空格和换行符。同样,它对 SQL 代码没有影响,但当空格很重要时应该考虑。
XML 文字仅在 VB 中可用,在 c# 中不可用。我怀疑您想做的是制作多行字符串文字?要在 C# 中执行此操作,您可以使用 @ 字符串前缀来制作逐字字符串,如下所示:
string sSQL = @"SELECT col1, col2
FROM table
ORDERBY col2";
参考前两个答案:
var query = @"SELECT *
FROM MyTable";
在C#中还有另一种写查询的方法如下:
string sSQL = "SELECT col1, col2 "+
"FROM table "+
"ORDERBY col2";
但在每行中的每个字符串的末尾添加 space 时要小心,以保持每个字符串的 space。
这在 VB.Net
中有效Dim sSQL As String
sSQL = <sql>MySQLQueryHere</sql>.Value
但是,这在 C# 中不起作用
string sSQL = "";
sSQL = <sql>MySQLQueryHere</sql>.Value;
以下部分在构建后显示错误。
sSQL = <sql>MySQLQueryHere</sql>.Value;
对我做错了什么有什么建议吗?
这是一个 XML 文字,它们在 C# 中不受支持。在编写 SQL 查询时,它们经常在 VB 中使用,以允许将文本拆分为多行,而不必使用大量引号和符号混淆内容。 VB 中不再需要它们,因为 VB 2015 及更高版本支持多行字符串文字。 C# 还支持多行字符串文字,而且我认为支持时间更长,尽管我不确定从哪个版本开始。
这是使用 XML 文字的 VB 代码示例:
Dim sql = <sql>
SELECT *
FROM MyTable
</sql>
Dim query = sql.Value 'This is a String
这是使用多行字符串文字的等效 VB:
Dim query = "SELECT *
FROM MyTable"
这是等效的 C# 代码:
var query = @"SELECT *
FROM MyTable";
在 C# 代码中,请注意,您必须使用逐字字符串文字才能将其分布在多行中。逐字字符串文字是一个前缀为 @
的字符串文字,表示引号之间的每个字符都应按字面意思理解。这些通常用于文件和文件夹路径,因此您无需转义所有斜线。不过,这确实意味着您无法转义文本中的任何内容。
另请注意,在所有三种情况下,每行开头的空格也作为文本的一部分包含在内。这对 SQL 代码来说没什么大不了的,但有时会出现问题,在这种情况下,您必须将所有文本推到编辑器的左侧。这看起来不太好,但这是一个必要的权衡。
我还应该指出,XML 文字代码并不完全等同于其他代码。严格来说,第一个代码片段必须像这样才能等效:
Dim sql = <sql>SELECT *
FROM MyTable</sql>
Dim query = sql.Value 'This is a String
不过在我看来,XML 文字通常写成 XML 更容易阅读,但没有理由在多行字符串文字中包含额外的空格和换行符。同样,它对 SQL 代码没有影响,但当空格很重要时应该考虑。
XML 文字仅在 VB 中可用,在 c# 中不可用。我怀疑您想做的是制作多行字符串文字?要在 C# 中执行此操作,您可以使用 @ 字符串前缀来制作逐字字符串,如下所示:
string sSQL = @"SELECT col1, col2
FROM table
ORDERBY col2";
参考前两个答案:
var query = @"SELECT *
FROM MyTable";
在C#中还有另一种写查询的方法如下:
string sSQL = "SELECT col1, col2 "+
"FROM table "+
"ORDERBY col2";
但在每行中的每个字符串的末尾添加 space 时要小心,以保持每个字符串的 space。