Filtern Sie eine Sammlung mit LINQ vs CollectionView

8

Ich möchte eine ObservableCollection mit maximal 3000 Elementen in einem DataGrid mit 6 Spalten filtern. Der Benutzer sollte in der Lage sein, alle 6 Spalten "& amp; & amp;" zu filtern.

Soll ich dafür LINQ oder eine CollectionView verwenden? LINQ schien einige www-Proben schneller zu versuchen. Haben Sie irgendwelche Vor- / Nachteile?

AKTUALISIEREN :

%Vor%     
Elisabeth 05.10.2010, 20:26
quelle

4 Antworten

3
  • Wenn Sie ICollectionView verwenden, erhalten Sie Benachrichtigungen zum automatischen Sammeln von Änderungen, wenn Sie Refresh aufrufen. Wenn Sie LINQ verwenden, müssen Sie Ihre eigenen Änderungsbenachrichtigungen auslösen, wenn der Filter erneut ausgeführt werden muss, um die Benutzeroberfläche zu aktualisieren. Nicht schwer, aber erfordert ein wenig mehr Gedanken als nur Refresh aufrufen.

  • LINQ ist flexibler als die einfache Ja / Nein-Filterung, die von ICollectionView verwendet wird, aber wenn Sie nicht etwas Komplexes tun, hat diese Flexibilität keinen Vorteil.

  • Wie Henk sagte, sollte es in der Benutzeroberfläche keine bemerkbaren Leistungsunterschiede geben.

John Bowen 06.10.2010 02:29
quelle
1

Für eine interaktive (DataGrid?) Erfahrung sollten Sie wahrscheinlich das CollectionView verwenden. Für eine Code-orientierte Sortierung, LINQ.

Und bei maximal 3000 Elementen sollte die Geschwindigkeit kein (wichtiger) Faktor in einer Benutzeroberfläche sein.

    
Henk Holterman 05.10.2010 20:35
quelle
1

Wie wäre es mit beiden? Thomas Levesque hat einen LINQ-fähigen Wrapper um ICollectionView erstellt.

Verwendung:

%Vor%

Code:

%Vor%

Ссылка

    
Clay 14.01.2014 16:00
quelle
0

Aufgrund der visuellen Komplexität und Anzahl der Elemente wird es wirklich einen bemerkenswerten Leistungsunterschied geben, da die Refresh-Methode die gesamte Ansicht neu erstellt !!!

    
Lukáš Koten 14.03.2018 15:43
quelle