刪除 DataRow

有兩種方法可讓您從 DataTable 物件刪除 DataRow 物件:DataRowCollection 物件的 Remove 方法和 DataRow 物件的 Delete 方法。 Remove 方法可從 DataRowCollection 刪除 DataRow,而 Delete 方法只能標記要刪除的資料列。 當應用程式呼叫 AcceptChanges 方法時才會發生真正的移除作業。 您可以使用 Delete,以程式設計方式檢查有哪些資料列標示為要刪除,然後再將其實際移除。 將資料列標記為要刪除時,會將其 RowState 屬性設為 Delete

在 foreach 迴圈中不應呼叫 DeleteRemove,而應逐一查看 DataRowCollection 物件。 DeleteRemove 都不會修改集合的狀態。

DataSetDataTableDataAdapter 和關聯式資料來源搭配使用時,請使用 DataRowDelete 方法來移除資料列。 Delete 方法會在 DataSetDataTable 中將資料列標記為 Deleted,但是不會將它移除。 相反地,當 DataAdapter 遇到標記為 Deleted 的資料列時,它會執行自己的 DeleteCommand 方法來刪除資料來源中的資料列。 然後就可以使用 AcceptChanges 方法,將資料列永久移除。 如果您使用 Remove 來刪除資料列,會將資料表中的資料列完全移除,但是 DataAdapter 則不會刪除資料來源中的資料列。

DataRowCollectionRemove 方法將 DataRow 視為引數,並且將它從集合中移除,如下列範例所示。

workTable.Rows.Remove(workRow)  
workTable.Rows.Remove(workRow);  

相反的,下列範例示範如何在 DataRow 呼叫 Delete 方法,將其 RowState 變更為 Deleted

workRow.Delete  
workRow.Delete();  

如果資料列被標示為刪除,而且您呼叫 DataTable 物件的 AcceptChanges 方法,則該資料列將從 DataTable 中移除。 相反的,如果您呼叫 RejectChanges,資料列的 RowState 將還原成被標示為 Deleted 之前的狀態。

注意

如果 DataRowRowStateAdded,表示它才剛加入至資料表,接下來它將被標記為 Deleted,表示已從資料表中移除。

另請參閱