2010-07-02 19 views
6

Tengo una instalación de recogida de pruebas como:¿Hay alguna forma de convertir una colección observable en una colección normal?

ObservableCollection<Person> MyselectedPeople = new ObservableCollection<Person>(); 

public MainWindow() 
    { 
     InitializeComponent(); 
     FillData(); 
    } 

public void FillData() 
    { 
     Person p1 = new Person(); 
     p1.NameFirst = "John"; 
     p1.NameLast = "Doe"; 
     p1.Address = "123 Main Street"; 
     p1.City = "Wilmington"; 
     p1.DOBTimeStamp = DateTime.Parse("04/12/1968").Date; 
     p1.EyeColor = "Blue"; 
     p1.Height = "601"; 
     p1.HairColor = "BRN"; 

     MyselectedPeople.Add(p1); 
    } 

Una vez que he construido esta colección me gustaría ser capaz de convertir la colección observable a la lista de tipos.

La razón detrás de esto es mi principal proyecto está recibiendo una lista genérica con los datos que tengo que convertirlo en una colección observable para su uso en gridview, cuadros de lista, etc. Los datos se selecciona dentro de la interfaz de usuario y se envía de nuevo a la asamblea de origen para un uso posterior.

Respuesta

10

Creo que la forma más rápida de hacerlo es con LINQ.

List<Person> personList= MySelectedPeople.ToList(); 

Cheers.

8

intente lo siguiente

var list = MyselectedPeople.ToList(); 

Asegúrese de que tiene System.Linq como una de sus declaraciones utilizando.

5

Esto debe hacerlo ...

List<Person> myList = MyselectedPeople.ToList<Person>(); 
+2

+1 por no usar 'var' como si estuviera pasando de moda. – Shibumi

4

sólo quiero señalar que, aparte del método obvio extensión LINQ, lista siempre ha tenido una sobrecarga que toma un IEnumerable<T>

return new List<Person>(MyselectedPeople); 
2

Es raro que el ensamblaje de fondo se codifica para aceptar sólo List<T> . Eso es muy restrictivo y le impide hacer cosas útiles, como pasar una matriz, o ObservableCollection<T>, o Collection<T>, o ReadOnlyCollection<T>, o las propiedades de Llaves o Valores de Dictionary<TKey, TValue>, o cualquiera de la miríada de otras cosas similares a listas ahí.

Si es posible, cambie el ensamblaje de la parte posterior para aceptar un IList<T>. Luego puede pasar su ObservableCollection<T> tal como está, sin tener que copiar su contenido en un List<T>.

+1

He visto bibliotecas heredadas o montajes de terceros que estaban mal diseñados y que a menudo encontraban extraño su problema. –

Cuestiones relacionadas