利用LINQ对对象列表进行分组
面向对象编程中,经常需要根据共享条件对对象进行分组。利用LINQ(语言集成查询)可以高效地实现此操作。下文将探讨如何将对象列表分组到一个新的分组列表中,该列表包含多个对象列表。
问题:
考虑一个表示用户的类:
<code class="language-csharp">public class User { public int UserID { get; set; } public string UserName { get; set; } public int GroupID { get; set; } }</code>
假设我们有一个用户列表:
<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>
我们的目标是按用户的GroupID对用户进行分组,从而得到一个按组分组的用户列表。
解决方案:
LINQ 提供了一个强大的分组机制,可以使用 GroupBy 方法。以下代码片段演示了如何实现所需的分组:
<code class="language-csharp">var groupedUserList = userList .GroupBy(u => u.GroupID) .Select(grp => grp.ToList()) .ToList();</code>
代码分解:
IGrouping<int, User>
),我们需要从每个组中选择用户。我们在Select中使用ToList方法将每个组转换为用户列表。groupedUserList
现在包含所需的分组:一个用户列表列表,其中每个内部列表代表属于同一组的用户。
以上是如何使用 LINQ 按共享属性对对象列表进行分组?的详细内容。更多信息请关注PHP中文网其他相关文章!