无法在foreach循环中处理DataTable

时间:2016-03-25 07:19:27

标签: c# collections

在我的Dispose方法中,我正在处理数据集中的所有内容,如下所示:

foreach (DataTable myTable in this.Tables)
{
    myTable.Dispose();
}

此处.Tables为public DataTableCollection Tables { get; }

我有大约56张桌子。桌子接近这个电话。

它适用于几张桌子,但突然之间抛出:

  

System.InvalidOperationException:   集合修改错误

我不确定为什么会这样。

我试图经常搜索这个异常,但我不知道为什么它会破坏我的应用程序。

可能是因为线程?或者我需要将其转换为列表?

1 个答案:

答案 0 :(得分:4)

例外是因为在枚举时会修改集合。 This answer解释得很清楚。

不同之处在于您枚举DataTableCollection,这不是通用集合,因此链接答案中的解决方案不适用于此情况。您可以将集合强制转换为通用集合,然后枚举它。

foreach (DataTable thisTable in this.Tables.Cast<DataTable>().ToArray())