【发布时间】:2012-05-19 19:47:10
【问题描述】:
首先,我知道这是一个常见问题。但是我不能使用其他解决方案,因为我正在比较不能为可空类型的类型,例如我的三元运算符中的 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
};
【问题讨论】:
-
错误在哪一行?如果它是最后一行代码(不包括括号),那么这正是它所说的问题:您的两个替代方案是
String.Format,其类型为string或0,其类型为int。将...("AppraisalFees")) : 0): 0更改为...("AppraisalFees")) : 0): "0",您将得到一个包含两个字符串且没有错误的三元。 -
这个解决方案有效,我发誓我以为我在 0 周围加上了引号并得到了编译错误,感谢您的帮助!!
标签: c# linq-to-sql