foreach (UIElement el in GridBoard.Children.ToList())
{
if (el is Ellipse)
{
GridBoard.Children.Remove(el);
}
}
是否有任何LINQ等效执行上述操作?如果是,请提供代码吗?感谢
答案 0 :(得分:1)
LINQ用于查询集合而不是引起副作用。根据MSDN,Silverlight不支持List<T>
的{{1}}方法,但支持RemoveAll
和Remove
方法,否则您可以编写:{{ 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版本的一部分,它将是最佳选择。