30 Stimmen

Gefilterte Elemente aus einer CollectionView holen

Ich habe eine ListCollectionView die mit einem Filter versehen wurde. Gibt es eine saubere Methode, um die gefilterten Elemente aus der Liste zu entfernen (z. B. um sie in eine Datei zu schreiben)?

Meine derzeitige Lösung ist

var filteredItems = originalCollection.Where(i => view.Filter(i));

In dem Code prüfe ich auf Nullen bei originalCollection y view.Filter .

Gibt es eine sauberere Methode, dies zu tun?

51voto

Thomas Levesque Punkte 277723

Die GetEnumerator Methode berücksichtigt den Filter, Sie können also einfach foreach über die Aussicht:

ICollectionView view = ...
view.Filter = ...

foreach(Foo o in view)
{
    ...
}

(vorausgesetzt, die Objekte in der ursprünglichen Sammlung sind vom Typ Foo ).

Sie können auch die Cast Erweiterungsmethode:

var filteredItems = view.Cast<Foo>();

0voto

XavrasX Punkte 41

Hier ist volles Beispiel, wie man gefilterte Elemente von DataGrid erhalten:

ICollectionView view = CollectionViewSource.GetDefaultView(*yourDataGrid*);
foreach(Foo o in view)
{
  ...
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X