2016-04-19 13 views
0

Ich muss oft eine ObservableCollection filtern, die bereits Elemente enthält. Welcher Ansatz ist besser?Wird ObservableCollection empfohlen, bevor Elemente hinzugefügt werden?

// Assigning the filtered result directly 
FilteredObservableCol = FilteredCollectionCopy.Where(i=> i.Age > 25).ToObservableCollection(); 

Oder

// Clearing the collection first 
FilteredObservableCol.Clear(); 
FilteredObservableCol = FilteredCollectionCopy.Where(i=> i.Age > 25).ToObservableCollection(); 
+1

Ihre Schnipsel werden nicht kompiliert. Also ist es auch nicht besser. Wenn Sie das Feld jedoch mit einer neuen Instanz neu zuweisen möchten, müssen Sie die alte Liste nicht löschen. –

+0

@SriramSakthivel, habe ich vermisst hinzufügen. ToObservableCollection() – usefulBee

Antwort

2

Sie CollectionViewSources anstelle der ObservableCollection zu binden nutzen könnten. Dort können Sie filtern.

ICollectionView MyCollection { get; private set; } 

public void LoadData() 
{ 
    var myObservable = //... load/create list 
    MyCollection = CollectionViewSource.GetDefaultView(myObservable); 
    MyCollection.Filter = item => ((TypeOfItem)item).Name = "bob"; 
} 
+0

Was "myobservable" wäre in diesem Fall? – usefulBee

+0

@usefulBee die anfängliche 'ObservableCollection' –

+0

Ein wenig verwirrend. Ich dachte MyCollection ersetzt MyObservableCollection vollständig. Sie sagen also, dass MyObservableCollection an die Ansicht gebunden bleibt, aber die Sortierung in MyCollection erfolgt. Ist das korrekt? thx – usefulBee

Verwandte Themen