DataRow 개체를 DataTable 개체에서 삭제하는 데 사용할 수 있는 두 가지 방법은 개체의 DataRowCollection 메서드와 Delete 개체의 메서드입니다. 메서드 Remove는 DataRowCollection에서 DataRow를 삭제하는 반면, 메서드 Delete는 단지 삭제할 행을 표시만 합니다. 애플리케이션에서 AcceptChanges 메서드를 호출할 때 실제 제거가 발생합니다. 이를 사용하면 Delete를 통해 실제로 삭제하기 전에 삭제로 표시된 행을 프로그램을 통해 확인할 수 있습니다. 행이 삭제되도록 표시되면 해당 RowState 속성은 .로 Delete설정됩니다.
Delete 개체를 foreach 루프로 반복하는 동안 Remove 또는 DataRowCollection를 호출해서는 안 됩니다. Delete 컬렉션의 상태를 수정하거나 Remove 변경하지 않습니다.
관계형 데이터 원본과 함께 DataSet 및 DataAdapter를 사용할 때, 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가 Added 상태여서 테이블에 방금 추가된 후 Deleted로 표시되면 테이블에서 제거됩니다.