Non so se questo è possibile in Linq ma qui va ...
Ho un oggetto:
public class User
{
public int UserID { get; set; }
public string UserName { get; set; }
public int GroupID { get; set; }
}
Restituisco un elenco che potrebbe essere simile al seguente:
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 } );
Voglio essere in grado di eseguire una query Linq nell'elenco precedente che raggruppa tutti gli utenti per GroupID. Quindi l'output sarà un elenco di elenchi di utenti che contiene l'utente (se questo ha senso?). Qualcosa di simile a:
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
Ho provato a usare la clausola groupby linq ma questo sembra restituire un elenco di chiavi e non è raggruppato correttamente:
var groupedCustomerList = userList.GroupBy( u => u.GroupID ).ToList();