Tôi không biết nếu điều này có thể xảy ra ở Linq nhưng ở đây sẽ ...
Tôi có một đối tượng:
public class User
{
public int UserID { get; set; }
public string UserName { get; set; }
public int GroupID { get; set; }
}
Tôi trả về một danh sách có thể trông như sau:
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 } );
Tôi muốn có thể chạy truy vấn Linq trong danh sách trên, nhóm tất cả người dùng theo GroupID. Vì vậy, đầu ra sẽ là một danh sách các danh sách người dùng có chứa người dùng (nếu điều đó có ý nghĩa?). Cái gì đó như:
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
Tôi đã thử sử dụng mệnh đề linq nhóm nhưng điều này dường như trả về một danh sách các khóa và nó không được nhóm một cách chính xác:
var groupedCustomerList = userList.GroupBy( u => u.GroupID ).ToList();