从集合中删除项目时出错[重复]

Posted

技术标签:

【中文标题】从集合中删除项目时出错[重复]【英文标题】:Error when deleting an item from collection [duplicate] 【发布时间】:2015-11-02 01:46:11 【问题描述】:

我正在尝试从 Collection 中删除一个元素,但最终出现错误

集合已修改;枚举操作可能无法执行。

我想要达到什么目的?

检查报告集合中的学生列表计数。

如果计数 == 1 比检查学生属性的 null 或 empty

如果全部为真,则从报告集合中删除学生..

这是我的代码

public void Create(StudentReport report)


    ICollection<StudentReportDetails> student= report.Students;
    if (student.Count == 1) 

    
        foreach (StudentReportDetails Studetails in student)
        

            if (String.IsNullOrEmpty(Studetails.StudentNumber)&& String.IsNullOrEmpty(Studetails.Description) && String.IsNullOrEmpty(Studetails.Summary))
            
                report.Students.Remove(Studetails);
            

        
    

【问题讨论】:

它是如何同时标记 C# 和 C 的?!! ***.com/questions/604831/… 使用for循环而不是foreach 正如它所说,您不能在基于枚举器的循环中删除集合项。而且我们可以理解为什么,在当前的item下面是这样的。但是你删除了当前项目,所以,没有后续。 @Garg Ankit 为什么如此苛刻.. 错误是人的本性。感谢您的编辑。 【参考方案1】:

是的。您不能修改集合。 Foreach 循环使集合成为只读的。

【讨论】:

感谢您的信息。我不知道。【参考方案2】:

如果要修改它,请将foreach 更改为for 循环:

for (int i = 0; i < student.Count; i++)
 

        if (String.IsNullOrEmpty(Studetails.StudentNumber)&& String.IsNullOrEmpty(Studetails.Description) && String.IsNullOrEmpty(Studetails.Summary))
        
            report.Students.Remove(Studetails);
        

    

【讨论】:

以上是关于从集合中删除项目时出错[重复]的主要内容,如果未能解决你的问题,请参考以下文章

删除 NSManagedObject 时出错 [重复]

从CTE删除时出错

Laravel 5.4 - 删除外键的唯一约束时出错[重复]

在另一个集合视图的标题中实现集合视图时出错

在 IntelliJ IDE 中运行 Dart 示例项目时出错 [重复]

构建spring boot项目时出错[重复]