有兩種方法可以用來從 DataTable 物件中刪除 DataRow 物件:使用DataRowCollection物件的Remove方法,或使用DataRow物件的Delete方法。 雖然Remove方法會從DataRowCollection中刪除DataRow,但Delete方法只會標記該數據列準備刪除。 當應用程式呼叫 AcceptChanges 方法時,就會發生實際移除。 藉由使用 Delete,您可以透過程序設計方式檢查哪些數據列標示為要刪除,然後再實際移除它們。 當資料列標示為刪除時,其 RowState 屬性會設定為 Delete。
在使用 foreach 循環遍歷 DataRowCollection 物件時,不應呼叫 Delete 或 Remove。 Delete 也不會 Remove 修改集合的狀態。
搭配 DataAdapter 和關係型數據源使用 DataSet 或 DataTable 時,請使用 DataRow 的 Delete 方法移除數據列。 Delete 方法會將數據列標示為 DataSet 或 DataTable 中的 Deleted,但不會將其移除。 相反地,當 DataAdapter 遇到標示為 Deleted 的數據列時,它會執行其 DeleteCommand 方法,以刪除數據源上的數據列。 然後可以使用 AcceptChanges 方法永久移除數據列。 如果您使用 Remove 刪除資料列,則會從資料表完全移除數據列,但 DataAdapter 不會刪除資料源的數據列。
DataRowCollection 的 Remove 方法會採用 DataRow 做為自變數,並將它從集合中移除,如下列範例所示。
workTable.Rows.Remove(workRow)
workTable.Rows.Remove(workRow);
相反地,下列範例示範如何在DataRow上呼叫Delete方法,將其RowState變更為 Deleted。
workRow.Delete
workRow.Delete();
如果數據列標示為要刪除,而且您呼叫 DataTable 物件的 AcceptChanges 方法,則會從 DataTable 中移除該數據列。 相反地,如果您呼叫 RejectChanges,則數據列的 RowState 會還原為在標示為 Deleted 之前的狀態。
備註
如果 DataRow 的 RowState 已新增,表示它剛新增至數據表,然後標示為 Deleted,則會從數據表中移除。
另請參閱
- DataRow
- DataRowCollection
- DataTable
- 操作 DataTable 中的數據
- ADO.NET 概觀