今天用for循环删除一些DataTable的行,发现有些删了,有些没有。代码如下:
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i].IsNull("RecordCount"))
{
dt.Rows[i].Delete();
}
}
dt.AcceptChanges();
首选,觉得可能是因为DataRow.Delete()只是标记为删除,不是真正的删除。
改为categoryDt.Rows.RemoveAt(i);
依然没用。
后来想,删除后可能改变了DataTable,让枚举不能正常执行。
把DataTable.Rows改为DataTable.Select()。问题解决!
foreach (DataRow row in dt.Select())
{
if (row.IsNull("RecordCount"))
{
row.Delete();
}
}