Domanda

Ho una DataTable che richiede qualcosa come sotto

usergroupid...userid......username
1.............1...........John
1.............2...........Lisa
2.............3...........Nathan
3.............4...........Tim

Quello che sto cercando di fare è scrivere un'istruzione LINQ che restituirà una matrice di istanze UserGroup. La classe UserGroup ha proprietà UserGroupId e Users. Users è una matrice di istanze utente. La classe User ha quindi proprietà UserId e UserName.

Il riempimento di una tale gerarchia può essere fatto con una singola istruzione LINQ e come sarebbe?

Grazie mille

È stato utile?

Soluzione

Dai un'occhiata, spero che questo aiuti

var users = new[] 
{
    new {UserGroupId = 1, UserId = 1, UserName = "John"},
    new {UserGroupId = 1, UserId = 2, UserName = "Lisa"},
    new {UserGroupId = 2, UserId = 3, UserName = "Nathan"},
    new {UserGroupId = 3, UserId = 4, UserName = "Tim"}
};

var userGroups = from user in users 
                 group user by user.UserGroupId into userGroup 
                 select new {
                                UserGroupId = userGroup.Key, 
                                Users = userGroup.ToList()
                            };

foreach (var group in userGroups)
{
    Console.WriteLine("{0} - {1}",group.UserGroupId, group.Users.Count);
}

Altri suggerimenti

C'è - guarda GroupBy e seleziona i metodi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top