Maison > développement back-end > C++ > Quelle est la différence entre les opérateurs SELECT et SelectMany de Linq?

Quelle est la différence entre les opérateurs SELECT et SelectMany de Linq?

Susan Sarandon
Libérer: 2025-01-28 17:51:10
original
988 Les gens l'ont consulté

What's the Difference Between LINQ's Select and SelectMany Operators?

linq à sql: compréhension Select et SelectMany

La maîtrise LINQ à SQL nécessite de comprendre les différences clés entre Select et SelectMany. Les deux données de projet, mais leurs approches diffèrent considérablement.

Select effectue une transformation individuelle. Il prend chaque élément d'une séquence d'entrée et applique une fonction pour produire un nouvel élément dans la séquence de sortie. Ceci est idéal pour extraire des propriétés spécifiques ou effectuer des calculs sur les éléments individuels.

SelectMany, en revanche, aplatit une séquence de séquences en une seule séquence. Ceci est inestimable lorsque vous travaillez avec des structures de données hiérarchiques ou imbriquées. Il vous permet de traverser plusieurs niveaux et d'accéder aux éléments sous-jacents.

illustrons une classe Person contenant une collection d'objets PhoneNumber:

<code class="language-csharp">public class PhoneNumber
{
    public string Number { get; set; }
}

public class Person
{
    public IEnumerable<PhoneNumber> PhoneNumbers { get; set; }
    public string Name { get; set; }
}</code>
Copier après la connexion

Select Exemple:

<code class="language-csharp">IEnumerable<IEnumerable<PhoneNumber>> phoneLists = people.Select(p => p.PhoneNumbers);</code>
Copier après la connexion

Ceci utilise Select pour obtenir une séquence de séquences de numéros de téléphone - une pour chaque personne. Le résultat reste imbriqué.

SelectMany Exemple:

<code class="language-csharp">IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers);</code>
Copier après la connexion

SelectMany aplatit la structure imbriquée, produisant une seule séquence contenant tous les numéros de téléphone de toutes les personnes.

combinant les données des parents et des enfants avec SelectMany:

Une caractéristique puissante de SelectMany est sa capacité à incorporer les données parentales dans la projection. En utilisant la surcharge avec un deuxième paramètre, vous pouvez créer un nouvel objet combinant les propriétés des parents et des enfants:

<code class="language-csharp">var directory = people
    .SelectMany(p => p.PhoneNumbers, (parent, child) => new { parent.Name, child.Number });</code>
Copier après la connexion

Cela génère un répertoire répertoriant le nom de chaque personne et ses numéros de téléphone associés. La sortie combine les données des classes Person et PhoneNumber.

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