2012-05-19 44 views
0

首先,我知道這是一個常見問題。但是我不能使用其他解決方案,因爲我正在比較我的三元運算符中不能被挖空的類型,例如DataRow類型。我也無法在我的網格中格式化貨幣,因爲我旋轉了我的數據,並且必須將自動生成列設置爲true。我也不能在其他地方格式化貨幣,因爲我想要一次調用來獲取原始數據和格式以在應該發生的地方發生。我需要使用LinqSql,因爲這是我怎麼綁定到一個Telerik的前數據準備radgrid控件無法確定條件表達式的類型,因爲'string'和'int'之間沒有隱式轉換

var drResults = from t1 in DatesTable.AsEnumerable() 
       join t2 in dtResult.AsEnumerable() on t1["MONTH_YEAR"] equals t2["MONTH_YEAR"] into t1_t2 
       from t2 in t1_t2.DefaultIfEmpty() 
       select new 
       { 
        MONTH_YEAR = t1.Field<string>("MONTH_YEAR"), 
        Appraisal_Fees = t2 != null ? String.Format("{0:C}", t2.Field<decimal>("AppraisalFees")) : 0): 0 
       }; 
+3

什麼路線是錯誤的?如果它是代碼的最後一行(不包括括號),那麼它正是它所說的問題:你的兩個選擇是'String.Format',它的類型是'string'或'0',它的類型是'int'。將......(「AppraisalFees」)):0):0'更改爲'...(「AppraisalFees」)):0):「0」',您將擁有一個帶有兩個字符串且沒有錯誤的三元組。 – IBBoard

+0

這個解決方案工作,我發誓我認爲我把報價圍繞0,並得到一個編譯錯誤,感謝您的幫助! –

回答

1

嘗試移動argement內三元表達String.Format

String.Format("{0:C}", (t2 != null ? t2.Field<decimal>("AppraisalFees") : 0M)) 

你也可以在兩行更容易閱讀寫它:

decimal appraisalFees = (t2 != null ? t2.Field<decimal>("AppraisalFees") : 0M); 
Appraisal_Fees = String.Format("{0:C}", appraisalFees); 
+0

這個解決方案的工作,非常感謝,它在我眼前;) –

相關問題