2013-07-19 29 views
1

如何使用條件操作符串裏面?使用條件運算符的字符串裏面?

爲什麼這個字符串的值丟失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... 

字符串值:

'', 
7/19/2013 9:04:35 AM), 
', 

我的理解是,這是不缺乏逃避charecters造成的,而是由於使用條件運算符。

感謝您的幫助!

回答

5

這是因爲operator precedence,加()到您的三元運營商,也將努力:

sb.AppendLine("TO_DATE(" + 
    (dtpEligDate.Value.ToString("yyyyMMddHHmmss") == "" ? "null" : dtpEligDate.Value.ToString()) + 
"),"); 

Basicaly它會首先連接字符串(+),然後評估條件語句(?:),但是你指望它對。括號將修復它。

作爲一個側面說明:它會是更好地使用參數化查詢。