Даже если DataRow.Delete
не изменяет состояние коллекции, Документация Microsoft гласит, что вы не должны вызывать ее при переборе по коллекции:
Ни Delete, ни Remove не должны вызываться в цикле foreach во время итерации объекта DataRowCollection. Удалить или Удалить изменить состояние коллекции.
Лучшее решение обычно - создать отдельную коллекцию (например, List<DataRow>
) элементов, которые вы хотите удалить, а затем удалить их после того, как вы закончили итерацию.
Это также решение для ситуаций, когда вы хотите удалить элементы из коллекции, так как большинство коллекций в .NET не позволяют вам изменять содержимое коллекции, пока вы выполняете ее итерацию.