Ajouter des éléments de IList à ObservableCollection
J'ai une ObservableCollection, et j'aimerais définir le contenu de IList à celui-ci. Maintenant, je pouvais juste de créer une nouvelle instance de la collection..:
public ObservableCollection<Bar> obs = new ObservableCollection<Bar>();
public void Foo(IList<Bar> list)
{
obs = new ObservableCollection<Bar>(list);
}
Mais comment puis-je réellement prendre le contenu de la IList et de l'ajouter à mon ObservableCollection? Dois-je faire une boucle sur tous les éléments, ou est-il un meilleur moyen?
public void Foo(IList<Bar> list)
{
foreach (var elm in list)
obs.Add(elm);
}
InformationsquelleAutor stiank81 | 2010-02-02
Vous devez vous connecter pour publier un commentaire.
Vous pourriez faire
ou comme une extension de la méthode,
Enumerable.ToList
méthode d'extension inutilement alloue un nouveauList<T>
. Je recommenderais RaYell de réponse.Vous pouvez écrire votre propre méthode d'extension si vous êtes à l'aide de C#3+ pour vous aider avec cela. Ce code a eu quelques test de base pour s'assurer qu'il fonctionne:
void
, à l'appui de la méthode de chaînage). Juste référence Microsoft.Practices.Composite.dll et d'ajouterusing Microsoft.Practices.Composite;
.La boucle est la seule façon, puisqu'il n'est pas
AddRange
équivalent pourObservableCollection
.Ici est un descendant de
ObservableCollection<T>
pour ajouter un message efficaceAddRange
, plus de tests unitaires:ObservableCollection Ne prend pas en charge AddRange méthode, donc je être averti de chaque élément ajouté, en plus de ce sujet INotifyCollectionChanging?