출처 - 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
'[ Program ] > C#' 카테고리의 다른 글
문자열마지막구분자 없애기 (0) | 2014.12.01 |
---|---|
Rollback for bulk copy (트랜젝션걸린 대량인서트) (0) | 2014.11.14 |
DataTable 에서 원하는 Row만 골라내기 (0) | 2014.11.05 |
방법: Windows Forms DataGridView 컨트롤에서 선택한 셀, 행 및 열 가져오기 (0) | 2014.08.22 |
c++ DLL을 C#에서 사용해보자 ( 클래스 마샬링 ) (0) | 2014.07.28 |
댓글