Maison >développement back-end >C++ >Comment puis-je regrouper une liste d'objets par propriété partagée à l'aide de LINQ ?

Comment puis-je regrouper une liste d'objets par propriété partagée à l'aide de LINQ ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-13 12:12:43966parcourir

How Can I Group a List of Objects by a Shared Property Using LINQ?

Regrouper une liste d'objets à l'aide de LINQ

En programmation orientée objet, il est souvent nécessaire de regrouper les objets selon des conditions de partage. Cela peut être fait efficacement en utilisant LINQ (Language Integrated Query). Ci-dessous, nous verrons comment regrouper une liste d'objets dans une nouvelle liste groupée contenant plusieurs listes d'objets.

Question :

Considérons une classe représentant un utilisateur :

<code class="language-csharp">public class User
{
    public int UserID { get; set; }
    public string UserName { get; set; }
    public int GroupID { get; set; }
}</code>

Supposons que nous ayons une liste d'utilisateurs :

<code class="language-csharp">List<User> userList = new List<User>();
userList.Add(new User { UserID = 1, UserName = "UserOne", GroupID = 1 });
userList.Add(new User { UserID = 2, UserName = "UserTwo", GroupID = 1 });
userList.Add(new User { UserID = 3, UserName = "UserThree", GroupID = 2 });
userList.Add(new User { UserID = 4, UserName = "UserFour", GroupID = 1 });
userList.Add(new User { UserID = 5, UserName = "UserFive", GroupID = 3 });
userList.Add(new User { UserID = 6, UserName = "UserSix", GroupID = 3 });</code>

Notre objectif est de regrouper les utilisateurs par leur GroupID, ce qui donne une liste d'utilisateurs regroupés par groupe.

Solution :

LINQ fournit un puissant mécanisme de regroupement utilisant la méthode GroupBy. L'extrait de code suivant montre comment obtenir le regroupement souhaité :

<code class="language-csharp">var groupedUserList = userList
    .GroupBy(u => u.GroupID)
    .Select(grp => grp.ToList())
    .ToList();</code>

Répartition des codes :

  1. GroupBy : C'est le cœur de l'opération de regroupement. Il regroupe les utilisateurs par leur GroupID, générant une liste de groupes où chaque groupe représente les utilisateurs qui appartiennent au même groupe.
  2. Sélectionner : Puisque la sortie de GroupBy est une liste de groupes (notée IGrouping<int, User>), nous devons sélectionner les utilisateurs de chaque groupe. Nous utilisons la méthode ToList dans Select pour convertir chaque groupe en une liste d'utilisateurs.
  3. ToList : Enfin, nous utilisons ToList pour reconvertir la liste des listes d'utilisateurs en liste.

groupedUserList contient désormais le regroupement requis : une liste de listes d'utilisateurs, où chaque liste interne représente un utilisateur qui appartient au même groupe.

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