Maison >développement back-end >C++ >Comment puis-je regrouper une liste d'objets par propriété partagée à l'aide de 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 :
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. 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!