为了账号安全,请及时绑定邮箱和手机立即绑定

使用Linq将对象列表分组到对象列表的新分组列表中

使用Linq将对象列表分组到对象列表的新分组列表中

C#
慕桂英546537 2019-08-27 13:48:08
使用Linq将对象列表分组到对象列表的新分组列表中我不知道Linq是否可能这样做但是这里......我有一个对象:public class User{   public int UserID { get; set; }   public string UserName { get; set; }   public int GroupID { get; set; }}我返回一个可能如下所示的列表: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 } );我希望能够在上面的列表上运行Linq查询,该查询按GroupID对所有用户进行分组。因此输出将是包含用户的用户列表列表(如果这有意义?)。就像是: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我尝试过使用groupby linq子句,但这似乎返回了一个键列表,并且没有正确分组:var groupedCustomerList = userList.GroupBy( u => u.GroupID ).ToList();
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

var groupedCustomerList = userList    .GroupBy(u => u.GroupID)
    .Select(grp => grp.ToList())
    .ToList();


查看完整回答
反对 回复 2019-08-27
?
呼如林

TA贡献1798条经验 获得超3个赞

您的组声明将按组ID分组。例如,如果你然后写:

foreach (var group in groupedCustomerList){
    Console.WriteLine("Group {0}", group.Key);
    foreach (var user in group)
    {
        Console.WriteLine("  {0}", user.UserName);
    }}

应该工作正常。每个组都有一个键,但也包含IGrouping<TKey, TElement>一个集合,允许您迭代组的成员。正如李提到的那样,如果你真的想要,你可以将每个组转换成一个列表,但是如果你只是按照上面的代码迭代它们,那么这样做没有任何实际好处。


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 463 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信