我正在尝试删除属于一个“用户”的所有“用户组”,然后添加新的“用户组”。
public void SaveUserUsergroups(int userID, int[] UsergroupID)
{
User uo = _entities.Users.Where(x => x.UserID == userID).First();
uo.Usergroups.Load();
foreach(Usergroup ug in uo.Usergroups)
{
uo.Usergroups.Remove(ug);
}
int _currentUsergroupID;
for (int i = 0; i < UsergroupID.Count(); i++)
{
_currentUsergroupID = UsergroupID[i];
uo.Usergroups.Add(_entities.Usergroups.Where(ug => ug.UsergroupID == _currentUsergroupID).First());
}
_entities.SaveChanges();
}
如果此处有多个用户组,则会抛出异常:
foreach(Usergroup ug in uo.Usergroups)
{
uo.Usergroups.Remove(ug);
}
我该如何解决这个问题?
/ M
答案 0 :(得分:2)
在迭代过程中,您无法修改集合。您可以构建一个要删除的项目集合,并在foreach循环后从关系中删除它们,或者使用类似的计数器向后遍历集合:
for (int i = uo.Usergroups.Count - 1; i >= 0; i--)
{
uo.Usergroups.Remove(uo.Usergroups.ElementAt(i));
}