Generische Filterfunktion schreiben
-
Hallo zusammen,
habt ihr ein Beispiel für eine generische Funktion, die ein List<T> entgegen nimmt und auf verschiedene Filterkriterien prüfen kann?
Filterkriterien könnten sein:
EQ = Equals to
NE = Not Equals to
GT = Greater Than
LT = Less Than
GE = Greater than or Equals to
LE = Less than or Equals to
SW = Starts With
EW = Ends With
NSW = Not Starts With
CT = Contains case-sensitive
CTI = Contains case-insensitiveDie Funktion könnte dann z.B. so aussehen:
public List<T> GetFilteredList<T>(string filterCriteria, string filterProperty, string filterValue, List<T> data)
und ein Aufruf dann exemplarisch so:
class Person { public string Name; public int Alter; } List<Person> gefilterteListe = GetFilteredList("EQ", "Name", "Hans-Peter", personenList);
Dieser Aufruf würde dann eine gefilterte Liste zurückgeben, bei der alle Personen mit "Hand-Peter" aufgerührt wären.
Gibt es da schon simple Lösungen mittels LINQ? Müsste man alle "filterCriterie" wie z.B. "EQ", "LT" etc. händisch abbilden?
Danke euch für die Hilfestellung!
Gruß
-
Versuch mal das von Apache Commons: https://commons.apache.org/proper/commons-collections/javadocs/api-release/org/apache/commons/collections4/CollectionUtils.html#filter(java.lang.Iterable, org.apache.commons.collections4.Predicate)
-
skluge schrieb:
Gibt es da schon simple Lösungen mittels LINQ?
Ja. Die Extension-Methode heisst
Where
.