注册 登录
编程论坛 C# 论坛

Linq指定的转换无效(已解决)

龙胆草 发布于 2022-09-22 16:15, 452 次点击
请问各位大侠,有如下的语句,从数据集取数并转成静态数组,总是报"指定的转换无效"错误
float[] arr_passrate = (from p in ds.Tables["passrate"].AsEnumerable()
                                        select p.Field<float>("rate")).ToArray();

加强制转换后错误依旧
float[] arr_passrate = (from p in ds.Tables["passrate"].AsEnumerable()
                                        select Convert.ToSingle(p.Field<float>("rate"))).ToArray();

直接用泛型则没有问题
var arr_passrate = from p in ds.Tables["passrate"].AsEnumerable()
                                        select p.Field<float>("rate");

试过double类型以不行,怎么样解决上面的问题呢?谢谢

[此贴子已经被作者于2022-9-29 07:46编辑过]

2 回复
#2
龙胆草2022-09-22 16:22
补充说明,数据库是sql server,数据库原型表的"rate"字段是算出来的,类似 "整数*1.0/整数 as rate"这样的.望大侠不吝赐教
#3
龙胆草2022-09-22 16:33
谢谢大家关注,换了个思路问题解决了,既然解决不了linq的数据类型问题,我就解决数据源的数据类型问题,在sql中这样改了一下,convert(real,整数*1.0/整数) as rate,将数据源强制转换一下,这样linq就可以用float了.不知道大侠们有没有更好的解决办法.
1