Dynamisches Linq: Dynamische Auswahl einer spezifischen Spalte
Wenn Sie sich mit einer Klasse wie der in dem Problem bereitgestellten
-Daten
befassen, müssen während der LINQ -Operation eine bestimmte Spalte ausgewählt werden. Diese Aufgabe kann durch dynamisch erstellte Lambda -Ausdrücke erledigt werden, die an ausgewählte übergeben werden.
Aus diesem Grund die
createNewStatement
-Methode. Es empfängt eine Zeichenfolge, die den erforderlichen Feldnamen als Eingabe enthält, und konstruiert dynamisch Lambda -Ausdrücke, die die erforderliche Spalte ausführen. In dieser Methode: <:>
Erstellen Sie einen Expressionsparameter, der das an Lambda übergebene Eingangsobjekt angibt.
Verwenden Sie Expression.New - Methode, um ein neues Beispiel für
Daten - zu erstellen.
verwenden expression.split Methode, um die Eingabezeichenfolge in eine Liste einzelner Feldnamen zu unterteilen.
Verwenden Sie für jeden Feldnamen - type.getProperty die entsprechenden Attribute in der -Daten
abrufen. -
verwenden Expression.Property Der ursprüngliche Wert des Abrufattributs.
verwenden Expression.
- Verwenden Sie Expression.
Verwenden Sie schließlich expression.lambda
Erstellen Sie den Lambda -Ausdruck und kompilieren Sie ihn in geeignete Arten von Provisionen. -
Mit der Methode createNewStatement
können Sie sie mit dem erforderlichen Feldnamen als Parameter aufrufen, um eine bestimmte Spalte dynamisch auszuwählen. Wählen Sie beispielsweise - field1 und field2
Spalte: - Spalte:
Diese Methode bietet eine gemeinsame Methode, die Spalten im LINQ -Vorgang dynamisch auswählt.
Das obige ist der detaillierte Inhalt vonWie kann Dynamic linq bestimmte Spalten on-Demand auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn