DataTable 无法转换的错误

时间:2023-05-30 13:40:44

目前基本上检索都已经离不开Linq了。所以最近在Linq的过程中出现了一些意外情况,特此记录下来。

先描述一下场景:

有一个查询的要求是这样的,检索出Status > 1 的数据。因为要根据其他状态也要处理,所以一次全部查询出来,再分别处理:

var tableEnumberable = Ds.Table[0].AsEnumerable();
tableEnumberable.Where(o=>o.Field<Int32>("Status") > 1)

这个一眼看上去感觉再正常不过了,而且我还专门在Sql Server模拟测试一下,一切正常。

好了。问题来了,突然有一天这个方法莫名其妙的报了一个错误:类型转换失败

然后我还在plsql 里查询了一个语句,检查了一下Status 是不是存在Null的情况,结果是没有Null的数据。

针对格式实验以后,发现针对Oracle查询出的Table 在整型转换的时候不能使用Field这个扩展方法。

修改为

tableEnumberable.Where(o=>Convert.ToInt32(o["Status"]) > 1)

终于不报错了。看来很多地方都埋着各种坑