无法确定条件表达式的类型,因为“字符串”和“int”之间没有隐式转换

本文关键字:字符串 之间 转换 int 类型 因为 表达式 条件 无法确定 | 更新日期: 2023-09-27 18:34:38

首先,我知道这是一个常见的问题。但是我不能使用其他解决方案,因为我正在比较不能被delcar为空的类型,例如我的三元运算符中的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
                };

无法确定条件表达式的类型,因为“字符串”和“int”之间没有隐式转换

尝试将参数内的三元表达式移动到 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);