//delete並不是真的刪除 只是 將該row的rowstate變為 rowstate.delete(Rows.Count還是那么多)
//remove是 真的從datatable中刪除
//remove是 真的從datatable中刪除
比如:
ds.Tables[0].Rows[i].Delete();
ds.Tables[0].Rows.RemoveAt(i);
兩者是有區別的.
1. 使用myDataTable.Rows.RemoveAt(i)刪除行.
2. 使用myDataTable.Rows(i).delete 這時候需要使用 myDataTable.AcceptChanges 才能更新到數據庫.
兩種方法看似第一種比較簡單.但不要在循環里使用myDataTable.Rows.RemoveAt(i).因為每刪除一行后.i的值會增加,但行數會是減少了.這么做一定會出錯.
因此要遍歷數據,使用Remove方式時,要倒序的遍歷
int count = ds.Tables[0].Rows.Count;
for (int i = count -1; i >=0; i--)
{
ds.Tables[0].Rows.RemoveAt(i);
}