2009-11-01 5 views

Répondre

44

En fonction du type d'objet dans le ObservableCollection ... Je suppose que c'est un int pour cet exemple:

IEnumerable<int> obsCollection = (IEnumerable<int>)GetCollection(); 
var list = new List<int>(obsCollection); 
+0

@Matthew, je l'ai réécrit sans le casting explicite inutile - le changer si vous ne l'aimez pas de cette façon. –

+1

@ 280Z28: Selon la question initiale, il obtient un objet comme sa collection, auquel cas une distribution est nécessaire quelque part. –

+0

pourquoi le convertir en IEnumerable <>? Ne pourrais-je pas le dépasser dans la nouvelle liste <> (ici)? –

3

ObservableCollection implémente IList<T>, donc vous devriez pouvoir utiliser ToList() dessus.

http://msdn.microsoft.com/en-us/library/bb342261.aspx

+1

Seulement en 3.5 avec LINQ, je dirais qu'il suffit de créer la liste vous-même à partir d'un IEnumerable. Cela implique toujours une distribution si vous avez seulement un objet. –

18

Étant donné que ObservableCollection<T> outils IEnumerable<T> vous pouvez donner au constructeur de List<T>:

List<T> myList = new List<T>(myObservableCollection); 

T est le type des éléments de la collection.

51

juste besoin d'ajouter l'espace de noms using System.Linq;

et utiliser la méthode ToList() dans l'objet ObservableCollection

0

Je pense que la question est ici que ObservableCollection pourrait être modifié à la volée lorsque vous essayez de le convertir en Liste ou utilisation en tant que telle, donc vous devrez peut-être utiliser un timer de surveillance jusqu'à ce que ObservableCollection se termine

Questions connexes