使用 Linq 将对象列表分组为新的对象列表分组列表 [英] Using Linq to group a list of objects into a new grouped list of list of objects
本文介绍了使用 Linq 将对象列表分组为新的对象列表分组列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不知道这在 Linq 中是否可行,但是这里...
I don't know if this is possible in Linq but here goes...
我有一个对象:
public class User
{
public int UserID { get; set; }
public string UserName { get; set; }
public int GroupID { get; set; }
}
我返回一个可能如下所示的列表:
I return a list that may look like the following:
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 对所有用户进行分组.所以输出将是一个包含用户的用户列表列表(如果这有意义?).类似的东西:
I want to be able to run a Linq query on the above list that groups all the users by GroupID. So the output will be a list of user lists that contains user (if that makes sense?). Something like:
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 子句,但这似乎返回了一个键列表,并且没有正确分组:
I've tried using the groupby linq clause but this seems to return a list of keys and its not grouped by correctly:
var groupedCustomerList = userList.GroupBy( u => u.GroupID ).ToList();
推荐答案
var groupedCustomerList = userList
.GroupBy(u => u.GroupID)
.Select(grp => grp.ToList())
.ToList();
这篇关于使用 Linq 将对象列表分组为新的对象列表分组列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文