Maison >développement back-end >C++ >Comment LINQ peut-il regrouper des objets dans une structure de liste hiérarchique ?

Comment LINQ peut-il regrouper des objets dans une structure de liste hiérarchique ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-13 11:49:44493parcourir

How Can LINQ Group Objects into a Hierarchical List Structure?

Regroupez les objets dans des structures de liste hiérarchique à l'aide de LINQ

Supposons que vous ayez un ensemble d'objets qui ont des propriétés qui les classent. Par exemple, imaginez que vous disposez d’un ensemble d’utilisateurs appartenant à différents groupes. Pour organiser et analyser efficacement les données, vous souhaiterez peut-être regrouper les utilisateurs en fonction de leurs associations de groupe.

Dans cet exemple, nous avons une classe appelée User avec des attributs comprenant UserID, UserName et GroupID. Disons que nous avons une liste d'utilisateurs qui ressemble à ceci :

<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 convertir cette liste en une structure hiérarchique qui regroupe les utilisateurs appartenant à un même groupe. Le résultat souhaité ressemble à :

<code>GroupedUserList
    UserList
        UserID = 1, UserName = "UserOne", GroupID = 1
        UserID = 2, UserName = "UserTwo", GroupID = 1
        UserID = 4, UserName = "UserFour", GroupID = 1
    UserList
        UserID = 3, UserName = "UserThree", GroupID = 2
    UserList
        UserID = 5, UserName = "UserFive", GroupID = 3
        UserID = 6, UserName = "UserSix", GroupID = 3</code>

Grâce aux puissantes capacités d'agrégation de LINQ, nous pouvons réaliser ce regroupement en utilisant le code suivant :

<code class="language-csharp">var groupedCustomerList = userList
    .GroupBy(u => u.GroupID)
    .Select(grp => grp.ToList())
    .ToList();</code>
La méthode

GroupBy classe les utilisateurs en fonction de leurs attributs GroupID. Il génère une collection de groupes, où chaque groupe représente un GroupID unique. La méthode Select convertit en outre ces groupes en listes d'utilisateurs, nous donnant une structure hiérarchique qui imbrique les listes d'utilisateurs dans chaque groupe.

En utilisant cette requête LINQ, vous pouvez organiser efficacement les données en groupes significatifs, améliorant ainsi vos capacités d'analyse et de manipulation de données.

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