【问题标题】:VB.Net to C# Conversion <sql></sql> [duplicate]VB.Net 到 C# 转换 <sql></sql> [重复]
【发布时间】:2018-12-12 05:14:15
【问题描述】:

这适用于 VB.Net

Dim sSQL As String
sSQL = <sql>MySQLQueryHere</sql>.Value

但是,这在 C# 中不起作用

string sSQL = "";
sSQL = <sql>MySQLQueryHere</sql>.Value;

以下部分在构建后显示错误。

    sSQL = <sql>MySQLQueryHere</sql>.Value;

关于我做错了什么有什么建议吗?

【问题讨论】:

  • 这没有意义,C# 没有 > 标签。如果您想要 c# 代码,请查看此 stackoverflow.com/a/21709663/5830472
  • 我知道您的问题已得到解答,但请您附上您收到的错误,以防对未来的读者有所帮助。

标签: c# vb.net vb.net-2010 c#-to-vb.net vb.net-to-c#


【解决方案1】:

这是一个 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 文字代码并不是其他代码的严格等价物。严格来说,第一个代码 sn-p 必须是这样才能等效:

Dim sql = <sql>SELECT *
               FROM MyTable</sql>
Dim query = sql.Value 'This is a String

尽管如此,在我看来,XML 文字在写成 XML 时更容易阅读,但没有理由在多行字符串文字中包含额外的空格和换行符。同样,它对 SQL 代码没有影响,但在空格很重要时应该考虑。

【讨论】:

  • 恭喜获得 25K!小心,乔恩·斯基特。 :-)
【解决方案2】:

XML 文字仅在 VB 中可用,在 c# 中不可用。我怀疑您想要做的是制作多行字符串文字?要在 C# 中这样做,您可以使用 @ 字符串前缀来制作逐字字符串,如下所示:

string sSQL = @"SELECT col1, col2
FROM table
ORDERBY col2";

【讨论】:

    【解决方案3】:

    参考前面两个答案:

    var query = @"SELECT *
                  FROM MyTable";
    

    还有另一种用 C# 编写查询的方法,如下所示:

    string sSQL = "SELECT col1, col2 "+
                  "FROM table "+
                  "ORDERBY col2";
    

    但要小心在每行中每个字符串的末尾添加空格以保持每个字符串的空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多