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:
var results = persons.GroupBy(p => p.PersonId) .Select(g => new { PersonId = g.Key, Cars = g.Select(p => p.car).ToList() });
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:
var carsByPersonId = persons.ToLookup(p => p.PersonId, p => p.car);
Accéder aux voitures pour un personId
spécifique est alors très simple:
var carsForPerson = carsByPersonId[personId].ToList(); // Convert to List if needed
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!