首先,我知道这是一个常见问题。但是我不能使用其他解决方案,因为我正在比较那些无法在我的三元运算符中删除可空类型的类型,例如DataRow类型。我也无法在网格中格式化货币,因为我正在转动数据并且必须将自动生成列设置为true。我也无法在其他地方格式化货币,因为我想要一个调用来获取原始数据和格式化应该发生的地方。我需要使用LinqSql,因为这是我在将数据绑定到Telerik RadGrid之前准备数据的方式
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
};
答案 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);