使用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();
呼如林
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>
一个集合,允许您迭代组的成员。正如李提到的那样,如果你真的想要,你可以将每个组转换成一个列表,但是如果你只是按照上面的代码迭代它们,那么这样做没有任何实际好处。
- 3 回答
- 0 关注
- 491 浏览
添加回答
举报
0/150
提交
取消