LINQ删除SilverLight Children中的UIElement

时间:2010-11-05 02:51:33

标签: .net linq silverlight-3.0 uielement

foreach (UIElement el in GridBoard.Children.ToList())
{
   if (el is Ellipse)
   {
       GridBoard.Children.Remove(el);
   }
}

是否有任何LINQ等效执行上述操作?如果是,请提供代码吗?感谢

1 个答案:

答案 0 :(得分:1)

LINQ用于查询集合而不是引起副作用。根据MSDN,Silverlight不支持List<T>的{​​{1}}方法,但支持RemoveAllRemove方法,否则您可以编写:{{ 1}}

您可以按如下方式使用LINQ:

RemoveAt

或者,您可以反过来遍历您的列表并使用GridBoard.Children.ToList().RemoveAll(el => el is Ellipse);,这会比使用var query = GridBoard.Children.OfType<Ellipse>().ToList(); foreach (var e in query) { GridBoard.Children.Remove(e); } 产生更好的效果:

RemoveAt

所以它与你所拥有的没什么不同。也许Remove支持将使其成为未来Silverlight版本的一部分,它将是最佳选择。