LINQ est utilisé pour interroger des collections plutôt que de causer des effets secondaires. Selon MSDN Silverlight ne supporte pas la méthode de RemoveAll
List<T>
mais ne supporte les méthodes Remove
et RemoveAt
, sinon vous auriez pu écrire: GridBoard.Children.ToList().RemoveAll(el => el is Ellipse);
Vous pouvez utiliser LINQ comme suit:
var query = GridBoard.Children.OfType<Ellipse>().ToList();
foreach (var e in query)
{
GridBoard.Children.Remove(e);
}
Alternativement, vous pouvez parcourir votre liste en sens inverse et utiliser RemoveAt
qui donnerait une meilleure performance puis en utilisant Remove
:
for (int i = GridBoard.Children.Count - 1; i >= 0; i--)
{
if (GridBoard.Children[i] is Ellipse)
GridBoard.Children.RemoveAt(i);
}
Donc ce n'est pas très différent de ce que vous aviez. Peut-être le support RemoveAll
fera-t-il place aux futures versions de Silverlight et ce serait le meilleur choix.
merci beaucoup! – TechTravelThink