在StringBuilder中使用布尔表达式

时间:2009-01-22 18:09:38

标签: c# string syntax boolean

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

我以前做过的事情:

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

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

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

7 个答案:

答案 0 :(得分:8)

添加括号:

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

答案 1 :(得分:4)

这个怎么样?

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

答案 2 :(得分:3)

另外说明如果你有一个stringbuilder,你应该用它来连接字符串。

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

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

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

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

答案 3 :(得分:3)

额外括号甚至更好用AppendFormat

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

答案 4 :(得分:2)

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

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

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

快速建议:如果您正在生成这样的SQL,那么您可以更好地使用StringTemplate之类的模板生成它而不是使用直接C#。