Group objects into hierarchical list structures using LINQ
Suppose you have a set of objects that have properties that classify them. For example, imagine that you have a set of users that belong to different groups. To organize and analyze data efficiently, you may want to group users based on their group associations.
In this example, we have a class called User
with attributes including UserID
, UserName
, and GroupID
. Let's say we have a list of users that looks like this:
<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>
Our goal is to convert this list into a hierarchical structure that groups together users who belong to the same group. The desired output looks like:
<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>
Using LINQ’s powerful aggregation capabilities, we can achieve this grouping using the following code:
<code class="language-csharp">var groupedCustomerList = userList .GroupBy(u => u.GroupID) .Select(grp => grp.ToList()) .ToList();</code>
GroupBy
method classifies users based on their GroupID
attributes. It generates a collection of groups, where each group represents a unique GroupID
. The Select
method further converts these groups into lists of users, giving us a hierarchical structure that nests lists of users within each group.
By using this LINQ query, you can effectively organize data into meaningful groups, thereby enhancing your data analysis and manipulation capabilities.
The above is the detailed content of How Can LINQ Group Objects into a Hierarchical List Structure?. For more information, please follow other related articles on the PHP Chinese website!