J'ai un ObservableCollection, et je voudrais définir le contenu d'un IList à celui-ci. Maintenant, je pouvais créer une nouvelle instance de la collection ..:Ajouter des éléments de IList à ObservableCollection
public ObservableCollection<Bar> obs = new ObservableCollection<Bar>();
public void Foo(IList<Bar> list)
{
obs = new ObservableCollection<Bar>(list);
}
Mais comment puis-je réellement le contenu du IList et l'ajouter à mon ObservableCollection existant? Dois-je faire une boucle sur tous les éléments, ou y a-t-il un meilleur moyen?
public void Foo(IList<Bar> list)
{
foreach (var elm in list)
obs.Add(elm);
}
Thx! Je suis allé avec l'approche ToList.ForEach pour le moment. Considérera la méthode d'extension si j'en ai besoin de plus d'un endroit. – stiank81
La méthode d'extension 'Enumerable.ToList' alloue inutilement une nouvelle' Liste '. Je recommanderais probablement la réponse de RaYell. –
@Richard - c'est vrai bien que sous le capot cela fait une nouvelle liste (liste) - qui appelle en interne ((ICollection ) liste) .CopyTo (T []) qui dans la plupart des implémentations de IList (par exemple Liste ) appelle une fonction de copie de tableau native (externe). ceci devrait être très efficace et impliquer seulement (au plus) une copie atomique des références nécessaires plutôt que l'itération des membres. –