Maison > développement back-end > C++ > Comment puis-je sélectionner dynamiquement des propriétés de type anonymes dans LINQ à l'aide d'arbres d'expression ?

Comment puis-je sélectionner dynamiquement des propriétés de type anonymes dans LINQ à l'aide d'arbres d'expression ?

Patricia Arquette
Libérer: 2025-01-22 19:12:10
original
485 Les gens l'ont consulté

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

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>
Copier après la connexion

Classe auxiliaire LinqRuntimeTypeBuilder :

<code>public static class LinqRuntimeTypeBuilder
{
    ... // 实现细节
}</code>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal