【问题标题】:Using a Boolean Expression in a StringBuilder在 StringBuilder 中使用布尔表达式
【发布时间】:2010-10-02 23:37:22
【问题描述】:

我正在使用字符串构建器来构建一些 SQL 脚本。我有一些布尔属性,我想测试它们,然后根据真/假输出不同的文本。在为变量赋值时,我有下面的 C# 语法,但它不适用于这种特殊情况。有什么想法吗?

我习惯做的事情:

string someText = (dbInfo.IsIdentity) ? "First Option" : "Second Option";

尝试在 StringBuilder 方法中复制相同的内容,但这不起作用..

script.Append("sometext" + (dbInfo.IsIdentity) ? " IDENTITY(1,1)" : "");

【问题讨论】:

    标签: c# string syntax boolean


    【解决方案1】:

    加括号:

    script.Append("sometext" + ((dbInfo.IsIdentity) ? " IDENTITY(1,1)" : ""));
    

    【讨论】:

      【解决方案2】:

      只是预感,但我认为您需要更多括号:

      script.Append("sometext" + ((dbInfo.IsIdentity) ? " IDENTITY(1,1)" : ""));
      

      为了便于阅读,我强烈建议您使用临时变量。

      【讨论】:

        【解决方案3】:

        首先,我会尝试将 if/then/else 包含在一组括号中,看看是否能解决问题。该表达式的计算顺序可能存在问题。

        【讨论】:

          【解决方案4】:

          这个呢?

          script.Append( "sometext" );
          script.Append( dbInfo.IsIdentity ? " IDENTITY(1,1)" : "" );
          

          【讨论】:

            【解决方案5】:

            如果你有一个字符串生成器,你应该用它来连接字符串。

            也就是说,下面的代码应该可以工作。

            script.Append("sometext");
            script.Append(dbInfo.IsIdentity ? " IDENTITY(1,1)" : "");
            

            在这种特殊情况下,您也可以这样做:

            script.Append("sometext");
            if(dbInfo.IsIdentity) script.Append(" IDENTITY(1,1)");
            

            【讨论】:

              【解决方案6】:

              额外的括号甚至更好地使用 AppendFormat

              script.AppendFormat("sometext{0}", dbInfo.IsIdentity ? " IDENTITY(1,1)" : "");
              

              【讨论】:

                【解决方案7】:

                一个快速的建议:如果您要像这样生成 SQL,那么使用像 StringTemplate 这样的模板来生成它可能会比使用直接 C# 更好。

                【讨论】:

                  猜你喜欢
                  • 2012-03-25
                  • 2010-09-21
                  • 2023-03-23
                  • 2012-04-18
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多