データテーブル DT
num type name
===================================
001 A Peter
002 A Sam
003 B John
public static void fun1(ref DataTable DT, String TargetType)
{
for (int i = 0; i < DT.Rows.Count; i++)
{
string type = DT.Rows[i]["type"];
if (type == TargetType)
{
/**Do Something**/
DT.Rows[i].Delete();
}
}
DT.AcceptChanges();
}
私の関数は、TargetType に従ってデータテーブル内の特定のデータ行を取得し、その情報を使用して何かを行います。データ行が読み取られた後 (対象の型に一致)、削除されます。
ただし、.Delete() の実行直後に行が削除されるため、次の行 (by i) の位置が正しくありません。
たとえば、TargetType が A の場合。i=0 の場合、.Delete の実行後に "Peter" 行が削除されます。次に、i=1 の場合、「Sam」行が検索されると思いますが、「Peter」行が削除されているため、実際には「John」行が検索されます。
コードに問題はありますか?