2009-11-01 30 views

Respuesta

44

Dependiendo del tipo de objeto en el ObservableCollection ... Vamos a suponer que es un int para este ejemplo:

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

@Matthew, lo reescribí sin el molde explícito innecesario; cámbielo si no le gusta de esta manera. –

+1

@ 280Z28: De acuerdo con la pregunta original, él está obteniendo un objeto como su colección, en cuyo caso se necesita un yeso en alguna parte. –

+0

¿por qué convertirlo en IEnumerable <>? ¿No podría simplemente pasarlo en la nueva lista <> (aquí)? –

3

ObservableCollection implementa IList<T>, por lo que debería poder utilizar ToList() en él.

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

+1

Solo en 3.5 con LINQ, argumentaría que la creación de la lista usted mismo de un IEnumerable es más fácil. Esto todavía implica un yeso si solo tienes un objeto. –

18

Dado que ObservableCollection<T> implementos IEnumerable<T> se puede dar al constructor de List<T>:

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

Dónde T es del tipo de los elementos de la colección.

51

sólo tiene que añadir el espacio de nombres using System.Linq;

y utilizar el método ToList() en el objeto ObservableCollection

0

Creo que el problema aquí es que ObservableCollection podría modificarse sobre la marcha cuando intenta convertirla en una Enumere o use como tal, por lo que es posible que necesite usar un temporizador de vigilancia hasta que ObservableCollection termine

Cuestiones relacionadas