DataRow 删除

要从DataRow对象中删除DataTable对象,可以使用两种方法:对象的DataRowCollection方法,或Delete对象的方法。 Remove 方法从 DataRowCollection 删除了 DataRow,而 方法仅标记要删除的行Delete。 当应用程序调用 AcceptChanges 方法时,将发生实际删除。 使用Delete编程方式可以检查哪些行已标记为要删除,然后再实际删除它们。 当行标记为要删除时,其 RowState 属性将设置为 Delete

在遍历Delete对象时,切勿在 foreach 循环中调用RemoveDataRowCollectionDeleteRemove 不会修改该集合的状态。

DataSetDataTableDataAdapter 和关系数据源结合使用时,请使用 DataRowDelete 方法删除该行。 Delete 方法将行标记为 DataSetDataTable中已删除,但不将其删除。 相反,当 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 之前的状态。

注释

如果RowStateDataRow状态是“已添加”,这意味着它刚刚被添加到表中,并且随后被标记为“已删除”,则会将其从表中删除。

另请参阅