我的目标是从我的应用程序中的用户列表中删除用户.但我无法理解此错误的底部.有人请保释我.
if (txtEmailID.Text.Length > 0)
{
users = UserRespository.GetUserName(txtEmailID.Text);
bool isUserAvailable=false;
foreach (EduvisionUser aUser in users) // Exception thrown in this line
{
isUserAvailable = true;
if(!aUser.Activated)
{
users.Remove(aUser);
}
}
if (users.Count == 0 && isUserAvailable)
{
DeactivatedUserMessage();
return;
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 20
在使用循环迭代它时,您无法修改集合foreach.典型选择:
for循环第二种方法的示例:
List<EduvisionUser> usersToRemove = new List<EduvisionUser>();
foreach (EduvisionUser aUser in users) --->***Exception thrown in this line***
{
isUserAvailable = true;
if(!aUser.Activated)
{
usersToRemove.Add(aUser);
}
}
foreach (EduvisionUser userToRemove in usersToRemove)
{
users.Remove(userToRemove);
}
Run Code Online (Sandbox Code Playgroud)
另一种选择,如果你使用的List<T>是使用List<T>.RemoveAll:
isUserAvailable = users.Count > 0;
users.RemoveAll(user => !user.Activated);
Run Code Online (Sandbox Code Playgroud)
您正试图从正在循环的列表中删除用户.
这是不可能的.最好是创建一个新列表并在其中添加好列表而不是删除坏列表
if (txtEmailID.Text.Length > 0)
{
//@new list
List<EduvisionUser> listOfAcceptedUsers = new List<EduvisionUser>()**
users = UserRespository.GetUserName(txtEmailID.Text);
bool isUserAvailable=false;
foreach (EduvisionUser aUser in users) --->***Exception thrown in this line***
{
isUserAvailable = true;
//Add user to list instead of deleting
if(aUser.Activated)
{
ListOfAcceptedUsers.Add(aUser);
}
}
//check new list instead of old one
if (ListOfAcceptedUsers.Count == 0 && isUserAvailable)
{
DeactivatedUserMessage();
return;
}
}
Run Code Online (Sandbox Code Playgroud)