Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net LINQ将删除SilverLight子级中的UIElement_.net_Linq_Silverlight 3.0_Uielement - Fatal编程技术网

.net LINQ将删除SilverLight子级中的UIElement

.net LINQ将删除SilverLight子级中的UIElement,.net,linq,silverlight-3.0,uielement,.net,Linq,Silverlight 3.0,Uielement,是否有任何LINQ等效于执行上述操作?如果是,请提供代码?谢谢LINQ用于查询集合,而不是产生副作用。根据MSDN,Silverlight不支持List的RemoveAll方法,但支持Remove和RemoveAt方法,否则您将能够编写:GridBoard.Children.ToList().RemoveAll(el=>el为椭圆) 您可以按如下方式使用LINQ: foreach (UIElement el in GridBoard.Children.ToList()) { if (el

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

LINQ用于查询集合,而不是产生副作用。根据MSDN,Silverlight不支持
List
RemoveAll
方法,但支持
Remove
RemoveAt
方法,否则您将能够编写:
GridBoard.Children.ToList().RemoveAll(el=>el为椭圆)

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

foreach (UIElement el in GridBoard.Children.ToList())
{
   if (el is Ellipse)
   {
       GridBoard.Children.Remove(el);
   }
}
所以它和你的没什么不同。也许
RemoveAll
支持将进入未来的Silverlight版本,这将是最佳选择

var query = GridBoard.Children.OfType<Ellipse>().ToList();
foreach (var e in query)
{
    GridBoard.Children.Remove(e);
}
for (int i = GridBoard.Children.Count - 1; i >= 0; i--)
{
    if (GridBoard.Children[i] is Ellipse)
        GridBoard.Children.RemoveAt(i);
}