Невозможно удалить DataTable в цикле foreach

В моем методе Dispose я удаляю все, что есть у Dataset, как показано ниже:

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

Здесь this.Tables public DataTableCollection Tables { get; }

У меня есть около 56 таблиц в этом. Таблицы, когда это приближается к этому вызову.

Он отлично работает для нескольких таблиц, но внезапно он бросает:

System.InvalidOperationException: Ошибка изменения коллекции

Я не уверен, почему это происходит.

Я пытался найти это исключение много, но я не мог понять, почему он ломается в моем приложении.

Может быть, из-за нарезки? или мне нужно преобразовать его в список?

Ответ 1

Исключением является то, что коллекция изменяется при ее перечислении. Этот ответ хорошо объясняет.

Разница заключается в том, что вы перечисляете DataTableCollection, который не является общей коллекцией, поэтому решение в связанном ответе не подходит в этом случае. Вы можете наложить коллекцию на общий, а затем перечислить ее.

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