Heim > Backend-Entwicklung > C++ > Wie kann ich anonyme Typeigenschaften in LINQ mithilfe von Ausdrucksbäumen dynamisch auswählen?

Wie kann ich anonyme Typeigenschaften in LINQ mithilfe von Ausdrucksbäumen dynamisch auswählen?

Patricia Arquette
Freigeben: 2025-01-22 19:12:10
Original
535 Leute haben es durchsucht

How Can I Dynamically Select Anonymous Type Properties in LINQ Using Expression Trees?

Verwenden Sie Ausdrucksbäume, um anonyme LINQ-Typattribute dynamisch auszuwählen

Es ist möglich, Ausdrucksbäume zu verwenden, um komplexe LINQ-Abfragen zu erstellen und anonyme Typen dynamisch auszuwählen. Während Abfragen, die ein einzelnes Attribut auswählen, einfach zu generieren sind, erfordert die Auswahl mehrerer Attribute in einem anonymen Typ einen anderen Ansatz.

Dazu können anonyme Typen zur Laufzeit mithilfe von Reflektionsemissions- und Hilfsklassen dynamisch definiert werden. Hier ist ein Beispiel:

Dynamische Erweiterungsmethode auswählen:

<code>public static IQueryable SelectDynamic(this IQueryable source, IEnumerable<string> fieldNames)
{
    ... // 实现细节
}</code>
Nach dem Login kopieren

LinqRuntimeTypeBuilder-Hilfsklasse:

<code>public static class LinqRuntimeTypeBuilder
{
    ... // 实现细节
}</code>
Nach dem Login kopieren

Dieser Ansatz ermöglicht die Erstellung komplexer dynamischer Auswahlen ohne Intellisense-Unterstützung, was für spät gebundene Datenkontrollen nützlich ist.

Das folgende Beispiel generiert eine Abfrage, die die Eigenschaften „Name“ und „Bevölkerung“ aus der Entität „Länder“ auswählt, wobei „Stadt“ gleich „London“ ist:

<code>var v = Countries.Where(c => c.City == "London")
    .SelectDynamic(new[] { "Name", "Population" });</code>
Nach dem Login kopieren

Als Ergebnis enthält die Variable v einen dynamischen Typ mit den Eigenschaften „Name“ und „Population“.

Das obige ist der detaillierte Inhalt vonWie kann ich anonyme Typeigenschaften in LINQ mithilfe von Ausdrucksbäumen dynamisch auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage