Utilisez des arbres d'expression pour sélectionner dynamiquement les attributs de type anonyme LINQ
Il est possible d'utiliser des arbres d'expression pour créer des requêtes LINQ complexes afin de sélectionner dynamiquement des types anonymes. Bien que les requêtes qui sélectionnent un seul attribut soient faciles à générer, la sélection de plusieurs attributs dans un type anonyme nécessite une approche différente.
Pour ce faire, les types anonymes peuvent être définis dynamiquement au moment de l'exécution à l'aide d'émissions réfléchies et de classes d'assistance. Voici un exemple :
Méthode d'extension SelectDynamic :
<code>public static IQueryable SelectDynamic(this IQueryable source, IEnumerable<string> fieldNames) { ... // 实现细节 }</code>
Classe auxiliaire LinqRuntimeTypeBuilder :
<code>public static class LinqRuntimeTypeBuilder { ... // 实现细节 }</code>
Cette approche permet la création de sélections dynamiques complexes sans prise en charge d'Intellisense, ce qui est utile pour les contrôles de données à liaison tardive.
L'exemple suivant génère une requête qui sélectionne les propriétés Name et Population de l'entité Countries où City est égal à « Londres » :
<code>var v = Countries.Where(c => c.City == "London") .SelectDynamic(new[] { "Name", "Population" });</code>
En conséquence, la variable v contiendra un type dynamique avec les propriétés Name et Population.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!