Maison >développement back-end >C++ >Comment l'opérateur Groupby de Linq peut-il agréger efficacement les objets en fonction des valeurs de propriété partagées?
Dans la programmation orientée objet, la situation de plusieurs objets partageant des attributs spécifiques est courante. Par exemple, la classe "Person" contient "ID" et la liste de voitures. Afin d'agréger clairement et efficacement une voiture associée à chaque ID unique, nous pouvons utiliser l'opérateur "GroupBy" de Linq.
L'opérateur GroupBY divise la séquence d'objets en un groupe plus petit en fonction de la valeur de la clé spécifiée. Dans notre catégorie "Person", nous pouvons utiliser la propriété "PersonID" comme clé des objets de groupe. Cela créera efficacement une structure similaire à un dictionnaire, où la clé est la seule valeur "personID", et la valeur est une liste de valeurs "voiture" associées à chaque "personID".
Exemple de code
Afin de regrouper l'objet "personne" et de récupérer la liste de voitures correspondante selon "PersonID", nous pouvons utiliser l'expression de requête Linq suivante:
ou, nous pouvons utiliser des expressions non de requête pour obtenir les mêmes résultats:
<code class="language-csharp">var results = from p in persons group p.car by p.PersonId into g select new { PersonId = g.Key, Cars = g.ToList() };</code>Résultats
<code class="language-csharp">var results = persons.GroupBy( p => p.PersonId, p => p.car, (key, g) => new { PersonId = key, Cars = g.ToList() });</code>"Résultats" Les variables contiendront désormais une collection d'un objet anonyme, qui a deux attributs:
"PersonID": le seul identifiant d'une personne
"CARS": La liste de toute la voiture appartenant à la personne
Afin d'être cohérent avec l'accord de dénomination.
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!