Forum: VB.NET |
Thema:
Sortieren und Filtern einer Collection |
Von:
Bernhard Grojer (
28.06.2006 17:56) |
Hallo!
Wir hatten schon einmal das Thema und hier nochmal da es mir noch immer unter den Fingernägeln juckt.
Zuerst eventuell gleich mal das Ziel:
Ich möchte eine Collection haben (in der Art wie List(of T) ) die mir Sortiermöglichkeiten und Filtermöglichkeiten für meine Objekte (Employee, Customer, Car, ...) anbietet.
Kurz gesagt das Ergebniss der Sache soll in etwa so aussehen:
Dim myCarCollection as CollectionClass = CarManager.loadAllCars()
myCarCollection.Filter("Description", FilterClause.equal , "xxx")
myCarCollection.Filter("Costs", FilterClause.bigger, "123123")
myCarCollection.Sort("Costs, Description DESC")
Ich habe im Prinzip 2 interessante (performante) Codebeispiele gefunden:
Sortieren: http://musingmarc.blogspot.com/2006/02/dynamic-sorting-of-objects-using.html
Filtern: http://www.codeproject.com/csharp/reflectivefilter.asp
Beides benutzt Reflection und ist somit relativ unabhängig.
Mein Ansatz wäre nun gewesen eine Art CollectionClass zu erstellen die I-Interface - List(of T) implementieren (btw.: gibts zu den I-Interfaces eigentlich ein Warum?/Wieso?/etc.)
Oder wäre etwas anders da schon besser?
Und in diese Klasse sollte dann auch noch eine Public Override Sub Sort und Public Sub Filter hinein.
Wenn man soweit mal ist gehts an das Eingemachte. (Implementieren der Funktionalität aus den beiden oben geposteten Links in die neue Klasse) Ich werd hier das Thema soweit ich kann aktuell halten mit Code etc. (ich habe auch in einem 2ten Forum gepostet)
Oder kennt eventuell irgendwer sogar schon soetwas?!
Betreff |
Von |
Datum |
|
  |
AW: Sortieren und Filtern einer Collection
Ich bin mal einen Schritt weiter:<br><br>Namespace CustomList<br><br> Public Class ListBase(Of T)<br> Inherits System.Collections.Generic.List(Of T)<br><br> Public Sub Filter(ByVal strField As... |
 |
 |
 |
|
|
Bernhard
Grojer
|
29.06.2006 23:45 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!