2
我不明白为什么“指定的转换无效异常”这里时抛出“指定的转换无效”在lambda表达式异常抛出时达到m.HadapGoalPercent
财产,我tryed也改变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
属性:
public Single ShotefGoalPercent { get; set; }
public Single HadapGoalPercent { get; set; }
这就是dt的数据表:
(HadapGoalPercent和ShotefGoalPercent被定义为在SQL数据库十进制(5,4))
非常感谢您的时间和considiration
你有没有尝试铸造到十进制?毕竟,你说它以小数点的形式存储在数据库中。 – sr28
查看'dt.Columns [“HadapGoalPercent”] .DataType'属性。它应该告诉你你需要使用哪些演员。 –
好的...感谢@ sr28问题解决了我已经改变了HadapGoalPercent,ShotefGoalPercent从单一到十进制以及查询中的数据到十进制也......它的工作。这里是我现在发现的关于decimal,float,single和double的区别的线程:http://stackoverflow.com/questions/618535/difference-between-decimal-float-and-double-in-net。为什么不把它写成答案? - 再次感谢 – jonathana