目前基本上检索都已经离不开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)
终于不报错了。看来很多地方都埋着各种坑