es gibt eine Entität in der Datenbank mit mehreren Feldern. Der Benutzer soll die Möglichkeit haben die Tabelle durchzusuchen. Dabei kann er (wenn es um einen Kunden geht) z.B. Namen und/oder Plz. und/oder Branche angeben.
Ich könnte für jede Variation jetzt eine Expression schreiben:
Ein sehr interessantes Thema. Das ganze nennt sich dann Dynamic Lambda, also Lambda-Ausdrucke die zur Laufzeit erzeugt werden. Um solche dynamischen Lambda-Ausdrucke zu erzeugen solltest du auf jedenfall die Grundlagen von Reflection mal überflogen haben und dich mit der Funktionsweise von Lambda auskennen.
Du kannst aber auch den Weg über den PredicateBuilder gehen. Mit dem hab ich sowas selbst zwar noch nicht gemacht aber es klingt interessant und sollte einfacher sein als Dynamic Lambda. Der PredicateBuilder ist Bestandteil des LINQKit's. Hier gibt es dann Lambda-Methoden wie .Or und .And. Eine Einführung dazu findest du hier: Dynamically Composing Expression Predicates.
Was aber so garnicht dynamisch ist. Wenn der Nutzer selber bestimmen soll welche Daten wie gefiltert werden sollen wird das ne ziehmliche Fummelarbeit.
Danke, aber leider kann ich mit der Vorgehensweise nichts anfangen, denn ich habe keinen direkten Zugriff auf die IQueryable<> Collection, sonder übergebe die Expression als Parameter ein ein Method.