Maison >développement back-end >C++ >Comment regrouper les objets de personne par ID et récupérer les noms de voitures associées dans LINQ?

Comment regrouper les objets de personne par ID et récupérer les noms de voitures associées dans LINQ?

Linda Hamilton
Linda Hamiltonoriginal
2025-02-02 00:06:10300parcourir

How to Group Person Objects by ID and Retrieve Associated Car Names in LINQ?

Grouvant efficacement des objets de personne et récupérant les noms de voiture avec Linq

Cet exemple montre comment regrouper une collection d'objets Person par leurs PersonId et récupérer les noms de voitures associés à l'aide de méthodes GroupBy ou ToLookup de Linq. Supposons que vous avez une liste d'objets Person, chacun avec une propriété PersonId et une car. L'objectif est de regrouper les personnes avec le même PersonId et d'obtenir une liste de voitures pour chaque groupe.

La méthode GroupBy fournit un moyen concis pour réaliser ce groupe:

<code class="language-csharp">var results = persons.GroupBy(p => p.PersonId)
                     .Select(g => new { PersonId = g.Key, Cars = g.Select(p => p.car).ToList() });</code>

Ce code regroupe d'abord la liste persons par la propriété PersonId. Ensuite, pour chaque groupe (g), il crée un objet anonyme contenant le PersonId (g.Key) et une liste de noms de voiture (g.Select(p => p.car).ToList()).

Alternativement, la méthode ToLookup crée une structure de recherche, similaire à un dictionnaire, offrant un accès efficace basé sur les clés:

<code class="language-csharp">var carsByPersonId = persons.ToLookup(p => p.PersonId, p => p.car);</code>

Accéder aux voitures pour un personId spécifique est alors très simple:

<code class="language-csharp">var carsForPerson = carsByPersonId[personId].ToList(); // Convert to List if needed</code>

Les deux approches regroupent efficacement les données, permettant une récupération facile et une manipulation des noms de voitures associés à chaque PersonId. Choisissez la méthode qui convient le mieux à vos besoins et à votre style de codage; ToLookup peut être préférable si vous prévoyez des recherches fréquentes de PersonId.

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!

Déclaration:
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