私は最近、アプリケーションを .net 1.1 から 3.5 にアップグレードする任務を負っており、2 つのバージョン間で動作が異なる DataView の RowFilter に遭遇しました。
これは、1.1 では動作するが 3.5 では動作しない 1.1 のコード ブロックです。これを 3.5 で実行しようとすると、次のエラーが表示されます。「System.String および System.Int32 で '=' 操作を実行できません」周りに目盛りを付けなくても文字列として扱いますが、3.5 では rptNum が表示され、周りに目盛りを付ける必要があります。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 のコード ブロックです。文字列として扱われるように、文字列パラメーターの周りに目盛りを追加する必要がありました。
private DataView BuildDataView(string rptNum) {
DataView dv = null;
if(dt != null) {
dv=new DataView(dt);
dv.RowFilter="reporting_number = '" + rptNum + "'";
}
return dv;
}