C# Datatable.select 在 Range 对象中,Min (14)必须小于或等于 max (-1)
问题描述:
for (int i = 0; i < deptIDs.Length;i++ ) { #region 安全日活动 iColNum = 0; iRownum = 0; filter = "rzlb='AQRHD' and ZZJGDM="+deptIDs[i]; DataRow[] drAQRHD = dtAllInfo.Select(filter, "riqi desc"); if (drAQRHD.Length > 0) { } }
这些代码在执行时有的能通过,有的提示:在 Range 对象中,Min (14)必须小于或等于 max (-1)
其中ZZJGDM经过查看是VARCHAR2(50)类型。
解决方法:
filter = "rzlb='AQRHD' and ZZJGDM='"+deptIDs[i]+"'";
添加两个单引号将ZZJGDM的值括起来,就行了。
在PL/SQL Developer中:
select * from brn_bzgl_rzjl t where t.rzlb='AQRHD' and t.ZZJGDM=12
和
select * from brn_bzgl_rzjl t where t.rzlb='AQRHD' and t.ZZJGDM='12'
执行结果都正常,在datatable.select()中第一种报上述错误。
例:
rows = dtGroup.Select("routeId=" + routeId.ToString(), "leftdate");改为
rows = dtGroup.Select("routeId='" + routeId.ToString()+"'", "leftdate");
C# DataTable的过滤条件中过滤字段参数类型必须和表对应的列数据类型一致。如上面routeId 为字符型,所以过滤条件为:routeId = '10',而不应该为routeId = 10
浙公网安备 33010602011771号