gpt4 book ai didi

c# - 集合被修改枚举操作可能不会执行

转载 作者:行者123 更新时间:2023-12-03 20:50:27 28 4
gpt4 key购买 nike

 string field = ViewState["Field"].ToString();

DataTable dt = (DataTable)Session["Academic"];
foreach (DataRow dr in dt.Rows)
{
if (dr["Degree"].ToString() == field)
{
dr.Delete();
dt.AcceptChanges();
}
}
Session["Academic"] = dt;
gdvwAcademic1.DataSource = Session["Academic"] as DataTable;
gdvwAcademic1.DataBind();

执行此代码时会引发错误,因为“集合已修改,枚举操作可能无法执行”。为什么这样..?

最佳答案

您不能修改 foreach 中的集合.尝试将此作为 apomene 答案的替代方法(几乎可以做同样的事情,除了使用列表的 remove 方法而不是索引。

List<DataRow> toDelete = new List<DataRow>();

foreach(DataRow dr in dt.Rows){
if(dr["Degree"].ToString() == field){
toDelete.Add(dr);
}
}

foreach (DataRow dr in toDelete){
dt.Rows.Remove(dr);
}

这应该可以解决您的问题。

关于c# - 集合被修改枚举操作可能不会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28626518/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com