2009년 11월 4일 수요일

루프를 돌면서 DataTable의 DataRow를 삭제할때

for 와 같은 루프문으로 DataTable.Rows 컬렉션에서 DataTable.Rows.Remove()를 실행하면 루프과정에서 컬렉션이 변경되므로 원하지 않는 이상한 결과를 초래한다.

이때는 DataRow.Delete()를 실행하고 루프문이 끝난 후 DataTable.AcceptChanges()를 호출하면 된다.

아래는 MSDN에서 발췌..

행의 RowState가 Added이면 행이 테이블에서 제거됩니다.

Delete 메서드를 사용한 후에는 RowState가 Deleted로 됩니다. AcceptChanges를 호출하기 전까지는 Deleted로 유지됩니다.

RejectChanges를 호출하여 삭제된 행의 삭제를 취소할 수 있습니다.

 

댓글 없음:

댓글 쓰기