'指定演员表无效'在查询浮点字段时在LAMBDA表达式中

时间:2016-07-27 08:05:07

标签: c# .net linq lambda

我无法理解为什么"指定演员阵容无效异常" 在这里抛出:

c#c​​ode:

当它到达div属性时抛出异常,我试图将m.HadapGoalPercent的数据类型也改为单一和双,但它不起作用

x => x.Field<float>("HadapGoalPercent")

认为月类中 for (int i = 0; i < dt.Rows.Count; i++) { Sales.Month m = new Sales.Month(Yearnum, (byte)(i+1)); m.HadapGoal = dt.AsEnumerable().Where(x => x.Field<int>("MonthNum") == i + 1).Select(x => x.Field<int>("HadapGoalIncome")).Single(); m.ShotefGoal = dt.AsEnumerable().Where(x => x.Field<int>("MonthNum") == i + 1).Select(x => x.Field<int>("ShotefGoalIncome")).Single(); m.HadapGoalPercent = dt.AsEnumerable().Where(x => x.Field<int>("MonthNum") == i + 1).Select( x => x.Field<float>("HadapGoalPercent")).SingleOrDefault(); m.ShotefGoalPercent = dt.AsEnumerable().Where(x => x.Field<int>("MonthNum") == i + 1).Select(x => x.Field<float>("ShotefGoalPercent")).SingleOrDefault(); months.Add(m); } ShotefGoalPercent属性的定义

HadapGoalPercent

那是dt datatable:

(HadapGoalPercent和ShotefGoalPercent在sql数据库中定义为十进制(5,4))

dt Datatable Image

非常感谢您的时间和考虑

1 个答案:

答案 0 :(得分:1)

根据我的评论,我不确定为什么你不只是作为小数点进行投射,因为这就是你在数据库中存储的内容。但是,如果你真的希望这是一个双倍,你可以尝试:

Convert.ToDouble(value)

根据您传入的小数位数,您应该没问题。使用非常大的小数,你会冒失去精确度的风险,但正如我所说,我不认为这对你来说是一个问题。