我不明白为什么这段代码行不通。

foreach (DataRow dataRow in dataTable.Rows)
{
    if (true)
    {
        dataRow.Delete();
    }
}

最佳答案

即使DataRow.Delete不会修改集合的状态,但Microsoft documentation声明在迭代集合时不应调用它:



最好的解决方案通常是为要删除的项目创建一个单独的集合(例如List<DataRow>),然后在完成迭代后将其删除。

对于要从​​集合中删除项目的情况,这也是解决方案,因为.NET中的大多数集合都不允许您在对其进行迭代时更改集合的内容。

关于c# - 安全删除ForEach中的DataRow,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2341580/

10-11 01:33