我最近的任务是将应用程序从 .net 1.1 升级到 3.5,并在 DataView 上遇到了一个 RowFilter,它在两个版本之间具有不同的行为。
这是我在 1.1 中的代码块,它适用于 1.1 但不适用于 3.5。我尝试在 3.5 中运行它时遇到以下错误“无法在 System.String 和 System.Int32 上执行 '=' 操作” 1.1 和 3.5 都在访问同一个数据库,我只是对 1.1 如何看到字符串参数感到困惑并将其视为字符串,无需在其周围放置 tic 标记,但在 3.5 中,它会看到 rptNum 并要求您在其周围放置 tic。dv 中的字段是字符串 DataType。
private DataView BuildDataView(string rptNum) {
DataView dv = null;
if(dt != null) {
dv=new DataView(dt);
dv.RowFilter="reporting_number = " + rptNum;
}
return dv;
}
这是我在 3.5 中更改的代码块,以便它可以工作。我必须在字符串参数周围添加 tic 标记,以便将其视为字符串。
private DataView BuildDataView(string rptNum) {
DataView dv = null;
if(dt != null) {
dv=new DataView(dt);
dv.RowFilter="reporting_number = '" + rptNum + "'";
}
return dv;
}