Ich versuche, einen dynamischen Benutzerfilter zu implementieren, bei dem einige Eigenschaften ausgewählt, einige Operatoren ausgewählt und auch die Werte ausgewählt werden.
Da ich auf diese Frage noch keine Antwort gefunden habe, habe ich versucht, LINQ-Ausdrücke zu verwenden.
Hauptsächlich muss ich alle Häuser identifizieren, die Haupträume sind Küchen (irgendein sens, ich weiß).
Aber Sie müssen die Eigenschaft RoomType
auf die Räume vorher setzen.
Ok, editieren:
Sie müssen also neu definieren:
%Vor%Dann, wenn Sie es verwenden:
%Vor%Bearbeiten # 2:
Ok, hier gehts:
%Vor%Edit # 3: Von, für Ihre Bedürfnisse, habe ich keine Ideen für jetzt. Ich gebe dir einen letzten:
Deklarieren Sie eine Erweiterungsmethode für den String-Typ:
%Vor%Dann benutze es in diesem Ausdruck wie:
%Vor% Das liegt daran, dass Enums anscheinend anders behandelt werden. Diese Erweiterung wird die Zeichenfolge für andere Typen unverändert lassen. Nachteil: Sie müssen dort ein weiteres typeof()
hinzufügen.
Die Methode Where
verwendet einen Func<House, bool>
oder einen Expression<Func<House, bool>>
als Parameter, aber die Variable comparison
hat den Typ LambdaExpression
, der nicht übereinstimmt. Sie müssen eine andere Überladung der Methode verwenden:
Ich würde die where-Klausel nicht auf diese Weise erstellen - ich denke, es ist komplexer als es für Ihre Bedürfnisse sein muss. Stattdessen können Sie where-Klauseln wie folgt kombinieren:
%Vor%Ich habe das getestet, ehrlich:)
Tags und Links .net c# linq linq-expressions