gpt4 book ai didi

c# - 查询浮点字段时 LAMBDA 表达式中的“指定转换无效”

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:01 25 4
gpt4 key购买 nike

我不明白为什么会在此处抛出“Specified cast is not valid exception”:

c#代码:

异常在到达 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 Month 类中的属性:

 public Single ShotefGoalPercent { get; set; }
public Single HadapGoalPercent { get; set; }

那是 dt 数据表:

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

dt Datatable Image

非常感谢您的时间和考虑

最佳答案

根据我的评论,我不确定您为什么不将其转换为小数,因为这就是您在数据库中存储的内容。但是,如果您真的想将其作为 double,您可以尝试:

Convert.ToDouble(value)

根据您传递的小数位数,您应该没问题。对于非常大的小数,您可能会面临失去精度的风险,但正如我所说,我认为这对您来说不是问题。

关于c# - 查询浮点字段时 LAMBDA 表达式中的“指定转换无效”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38607233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com