ฉันไม่รู้ว่านี่เป็นไปได้ใน 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 clause แต่ดูเหมือนว่าจะส่งคืนรายการของคีย์และไม่ได้จัดกลุ่มตามอย่างถูกต้อง:
var groupedCustomerList = userList.GroupBy( u => u.GroupID ).ToList();