在字符串中使用条件运算符?

Zzz*_*Zzz 1 c# stringbuilder escaping conditional-operator

如何在字符串中使用条件运算符?

为什么缺少此字符串的值TO_DATE('单引号?我该怎么做才能解决这个问题?

StringBuilder sb = new StringBuilder();
//code...
sb.AppendLine("     '" + txtStatus.Text + "',");
sb.AppendLine("     TO_DATE(" + dtpEligDate.Value.ToString("yyyyMMddHHmmss") == "" ? "null" : dtpEligDate.Value.ToString() + "),");
sb.AppendLine("     '" + txtCoverageEndReason.Text == "" ? "null" : txtCoverageEndReason.Text + "',");
//code...
Run Code Online (Sandbox Code Playgroud)

字符串值:

'',
7/19/2013 9:04:35 AM),
',
Run Code Online (Sandbox Code Playgroud)

我的理解是,这不是由于缺少转义字符,而是因为使用了条件运算符.

谢谢您的帮助!

Zbi*_*iew 5

这是因为运算符优先级,添加()到您的三元运算符,它将工作:

sb.AppendLine("TO_DATE(" + 
    (dtpEligDate.Value.ToString("yyyyMMddHHmmss") == "" ? "null" : dtpEligDate.Value.ToString()) + 
"),");
Run Code Online (Sandbox Code Playgroud)

Basicaly它将首先连接strings(+)然后计算条件语句(?:),但你希望它是相反的.括号将修复它.

作为旁注:使用参数化查询最好.