我想删除Tag
设置为字符串Dynamic
的所有项目:
foreach (MenuItem item in Items.Cast<object>().Where(mi => mi is MenuItem && ((MenuItem) mi).Tag == "Dynamic"))
{
Items.Remove(item);
}
不幸的是,它不允许我在迭代集合时删除项目。
是否有一种简单的方法可以删除某些条件符合true的所有项目,在这种情况下Tag
设置为字符串Dynamic
?
答案 0 :(得分:4)
由于在迭代时无法更改集合,因此您必须存储结果项并在第二步中将其删除。
IList<MenuItem> itemsToRemove = Items.Cast<object>().Where(mi => mi is MenuItem && ((MenuItem) mi).Tag == "Dynamic").ToList();
foreach (MenuItem item in itemsToRemove)
{
Items.Remove(item);
}
答案 1 :(得分:3)
您可以使用方法List<T>.RemoveAll(Predicate<T> match)
,如下所示:
Items.Cast<object>()
.RemoveAll(mi => mi is MenuItem && ((MenuItem) mi).Tag == "Dynamic");