본문 바로가기
[ Program ]/C#

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

by 관이119 2014. 11. 10.

출처 - http://devswaf.blogspot.kr/2009/11/%EB%A3%A8%ED%94%84%EB%A5%BC-%EB%8F%8C%EB%A9%B4%EC%84%9C-datatable%EC%9D%98-datarow%EB%A5%BC-%EC%82%AD%EC%A0%9C%ED%95%A0%EB%95%8C.html

 

 

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

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

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

아래는 MSDN에서 발췌..

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

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

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

 

 

 

MSDN 경로 - http://msdn.microsoft.com/ko-kr/library/system.data.datarow.delete(v=vs.80).aspx

댓글