1. 程式人生 > >集合已修改;列舉操作可能無法執行。

集合已修改;列舉操作可能無法執行。

System.InvalidOperationException: Collection was modified; enumeration operation might not execute.

使用foreach或for迴圈刪除DataRow的時候出的問題。

用dt.Rows.RemoveAt()或dt.Rows.Remove()或dt.Rows[i].delete()時都可能出現這個問題。

問題原因:row[i].delete()的時候(dt.Rows.RemoveAt()和dt.Rows.Remove()其實是先delete再AcceptChanges的),行的狀態必須是Unchanged,才可以的,新增加的行裡的狀態是Added,然後丟擲了剛才說的異常。

解決辦法:迴圈找到datatable中每一行的行狀態,都改為Unchanged。