いや、ま。ちゃんとわかって使ってるんならいいんですけども。
言うまでもなく、DefaultViewはDataTableオブジェクトが存命している限り存命であり、1つのDataTableに対して1つしかありません。
ということは…
//ある場所では、新規追加したレコードだけを抽出しようと思って…
DataView dv = dataTable.DefaultView;
dv.RowStateFilter = DataViewRowState.Added;
foreach( DataRowView drv in dv )
{
//一行ずつ処理
}
とかやっといて、
//別の場所では、RowFilterで絞り込み…
DataView dv = dataTable.DefaultView;
dv.RowFilter = "ColumnA=1";
foreach( DataRowView drv in dv )
{
//あれ? dvが空っぽ…
}
なんてことに(実際なりました)。
原因は最初の方で設定したRowStateFilterがまだ有効だったため。
教訓:
その場しのぎのフィルタリングにDefaultViewを使うべからず。
DataViewを新しく作って使い捨てるべし。