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。