繁体   English   中英

在StringBuilder中使用布尔表达式

[英]Using a Boolean Expression in a StringBuilder

我正在使用字符串生成器来构建一些SQL脚本。 我有一些要测试的布尔属性,然后根据true / false输出不同的文本。 在为变量赋值时,我使用了下面的C#语法,但是在这种特定情况下它不起作用。 有任何想法吗?

我已经习惯了:

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

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

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

添加括号:

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

那这个呢?

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

除了指出如果您有stringbuilder之外,还应该使用它来连接字符串。

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

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

在这种情况下,您还可以执行以下操作:

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

附加括号甚至更好使用AppendFormat

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

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

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

出于可读性考虑,我强烈建议您使用一个临时变量。

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

一个快速的建议:如果要像这样生成SQL,与使用直接C#相比,使用StringString之类的模板来生成SQL可能会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM