// tmpClientList is List<Client> type
if (txtboxClientName.Text != "")
foreach (Client cli in tmpClientList)
if (cli.Name != txtboxClientName.Text)
tmpClientList.Remove(cli);
Run Code Online (Sandbox Code Playgroud)
错误:"集合已被修改;枚举操作可能无法执行."
如何以一种简单的方式从列表中删除项目,而不保存这些项目在另一个列表或数组中的索引,并在代码中的其他位置删除它们.尝试了RemoveAt(索引)但它完全相同的情况,修改循环运行时.
Jam*_*iec 11
向后移动列表..这样删除项目不会影响下一个项目.
for(var i=tmpClientList.Count-1;i>=0;i--)
{
if (tmpClientList[i].Name != txtboxClientName.Text)
tmpClientList.RemoveAt(i);
}
Run Code Online (Sandbox Code Playgroud)
bdu*_*kes 11
在a上List<T>,有一个RemoveAll方法可以使委托指示是否删除该项.你可以像这样使用它:
tmpCLientList.RemoveAll(cli => cli.Name != txtboxClientName.Text);
Run Code Online (Sandbox Code Playgroud)
问题是您正在尝试在 foreach 迭代中修改列表。将其替换为 for 就可以了。
另外,由于您似乎使用用户输入的名称,请考虑稍微清理一下输入,至少使用 Trim() 来删除多余的空格。如果不这样做,“John”和“John”将是两个不同的东西。与初始 != "" 检查相同。
| 归档时间: |
|
| 查看次数: |
2704 次 |
| 最近记录: |