Exclusão de DataRow

Há dois métodos que você pode usar para excluir um objeto DataRow de um objeto DataTable: o método Remove do objeto DataRowCollection e o método Delete do objeto DataRow. Enquanto o método Remove exclui um DataRow do DataRowCollection, o método Delete marca apenas a linha para exclusão. A remoção real ocorre quando o aplicativo chama o método AcceptChanges. Usando Delete, você pode verificar programaticamente quais linhas estão marcadas para exclusão antes de realmente removê-las. Quando uma linha está marcada para exclusão, sua propriedade RowState é definida como Delete.

Nem Delete ou Remove deve ser chamado em um loop foreach ao fazer a iteração por meio de um objeto de DataRowCollection. Nem Delete ou Remove modificam o estado da coleção.

Ao usar um DataSet ou um DataTable em conjunto com um DataAdapter e uma fonte de dados relacional, use o método Delete do DataRow para remover a linha. O método Delete marca a linha como Deleted no DataSet ou no DataTable, mas não o remove. Em vez disso, quando o DataAdapter encontra uma linha marcada como Deleted, ele executa o método DeleteCommand para excluir a linha na fonte de dados. A linha pode então ser permanentemente removida usando o método AcceptChanges. Se você usar Remove para excluir a linha, a linha será completamente removida da tabela, mas o DataAdapter não excluirá a linha na fonte de dados.

O método Remove do DataRowCollection utiliza o DataRow como um argumento e remove-o da coleção, conforme mostrado no exemplo a seguir.

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

Em comparação, o exemplo a seguir demonstra como chamar o método Delete em um DataRow para alterar seu RowState para Deleted.

workRow.Delete  
workRow.Delete();  

Se uma linha estiver marcada para exclusão e você chamar o método AcceptChanges do objeto DataTable, a linha será removida do DataTable. Em comparação, se você chamar RejectChanges, o RowState de linha será revertido para o que era antes de ser marcado como Deleted.

Observação

Se o RowState de um DataRow for Added, o que significa que ele acabou de ser adicionado à tabela e está marcado como Deleted, ele será removido da tabela.

Confira também