如何从 ItemsCollection 中删除 Tags 是某些内容的项目
本文关键字:项目 Tags ItemsCollection 删除 | 更新日期: 2023-09-27 18:35:24
我想删除所有Tag
设置为字符串Dynamic
的项目:
foreach (MenuItem item in Items.Cast<object>().Where(mi => mi is MenuItem && ((MenuItem) mi).Tag == "Dynamic"))
{
Items.Remove(item);
}
不幸的是,它不允许我在迭代集合时删除项目。
有没有一种简单的方法可以删除满足特定条件的所有项目,在这种情况下Tag
设置为字符串Dynamic
?
由于在迭代集合时无法更改集合,因此必须存储结果项并在第二步中删除它。
IList<MenuItem> itemsToRemove = Items.Cast<object>().Where(mi => mi is MenuItem && ((MenuItem) mi).Tag == "Dynamic").ToList();
foreach (MenuItem item in itemsToRemove)
{
Items.Remove(item);
}
你可以改用该方法List<T>.RemoveAll(Predicate<T> match)
,如下所示:
Items.Cast<object>()
.RemoveAll(mi => mi is MenuItem && ((MenuItem) mi).Tag == "Dynamic");