Interface erweitern

18/09/2007 - 14:14 von Christoph Dreßler | Report spam
Hallo,

ich habe eine Prinzipfrage: ist ein Interface erweiterbar?

Hintergrund: über IQueryable werden Linq-Collections gespeichert.
Leider unterstützen die nicht das Filtern (SupportsFiltering = false).
Ich würde das nun gern nachrüsten.

Fernziel ist, auf eine Linq-Collection Filter anwenden zu können wie
auf die DataTable. Was nicht geht:
- Where-Extension verwenden: es erfolgt eine DB-Abfrage, was ich wegen
eines einzelnen Filters vermeiden will.
- in Datatable kopieren: Speicherplatzproblem, Typsicherheit geht
flöten.

-christoph
 

Lesen sie die antworten

#1 Elmar Boye
19/09/2007 - 09:49 | Warnen spam
Hallo Christoph,

Christoph Dreßler schrieb ...
ich habe eine Prinzipfrage: ist ein Interface erweiterbar?



Nur durch ein abgeleitetes Interface.
Nur ist das Interface hier nicht das Problem.
Denn das legt nicht das Verhalten fest.

Hintergrund: über IQueryable werden Linq-Collections gespeichert.
Leider unterstützen die nicht das Filtern (SupportsFiltering = false).



Im Hintergrund wird die IBindingList Schnittstelle, die SupportsFiltering
vorgibt, durch eine aufgebohrte BindingList<T> aus System.ComponentModel
erstellt, die jedoch keine Filter unterstützt.

Ich würde das nun gern nachrüsten.

Fernziel ist, auf eine Linq-Collection Filter anwenden zu können wie
auf die DataTable.



Was Du so implementieren solltest, wie es die DataTable mit
der DataView tut. Denn dort wird der Filter von der DataView
implementiert, d. h. sie übertràgt nur zutreffende DataRow
Instanzen in die Liste.
Vergleichbars kannst Du über eine eigene Auflistung erreichen,
die IBindingList bzw. IBindingListView implementiert und
ie auf die Entities der gelieferten Liste den jeweiligen Filter anwendet.
Damit kann man bei geàndertem Filter eine erneute Abfrage vermeiden.

Wobei das implementieren des Filters (àhnlich der DataView)
nicht ganz trivial ist. Einen Eindruck was dazu nötig ist kann z. B.
http://www.codeplex.com/Nquery vermitteln.

Gruss
Elmar

Ähnliche fragen