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>
LinqRuntimeTypeBuilder-Hilfsklasse:
<code>public static class LinqRuntimeTypeBuilder { ... // 实现细节 }</code>
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>
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!