2010-07-02 21 views
6

Mam konfiguracji zbiórki badań jak:Czy istnieje sposób na przekształcenie obserwowalnej kolekcji w zwykłą kolekcję?

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); 
    } 

Gdy mam ten zbiór zbudowany Chciałbym, aby móc konwertować obserwowalnym Collection do listy Typ.

Powodem tego jest mój główny projekt, otrzymuję ogólną listę z danymi, które muszę przekonwertować na kolekcję Observable do wykorzystania w widoku siatki, listach itp. Dane są wybierane w interfejsie użytkownika, a następnie wysyłane z powrotem do zespołu początkowego do dalszego użytkowania.

Odpowiedz

10

myślę najszybszym sposobem, aby to zrobić, to z LINQ.

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

Pozdrawiam.

8

Wypróbuj następujące

var list = MyselectedPeople.ToList(); 

Sprawdź, czy masz System.Linq jako jeden z zastosowaniem wypowiedzi.

5

To powinno wystarczyć ...

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

+1 za niewykorzystanie 'var', tak jak wychodziło z mody. – Shibumi

4

Chcę tylko podkreślić, że oprócz oczywistej metody rozszerzeń LINQ Lista zawsze miał przeciążenie, że trwa IEnumerable<T>

return new List<Person>(MyselectedPeople); 
2

To dziwne, że zespół back-end jest kodowana tylko zaakceptować List<T> . Jest to bardzo restrykcyjne i uniemożliwia wykonywanie przydatnych rzeczy, takich jak przekazywanie tablicy, lub ObservableCollection<T> lub Collection<T>, lub ReadOnlyCollection<T> lub właściwości Keys lub Values ​​z Dictionary<TKey, TValue> lub dowolnej z wielu innych podobnych do listy rzeczy. tam.

Jeśli to możliwe, zmień zespół zaplecza, aby zaakceptować IList<T>. Wtedy możesz po prostu przekazać swój numer ObservableCollection<T> tak, jak to jest, bez konieczności kopiowania jego zawartości do List<T>.

+1

Widziałem starszych bibliotek lub zestawów 3rd party, które zostały źle zaprojektowane daleko często, aby znaleźć jego problem dziwne. –

Powiązane problemy