LINQ группировка / подзапрос для заполнения иерархии данных strcuture - PullRequest
2 голосов
/ 26 ноября 2008

У меня есть DataTable, который запрашивает что-то вроде ниже

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

Я пытаюсь написать оператор LINQ, который будет возвращать массив экземпляров UserGroup. Класс UserGroup имеет свойства UserGroupId и Users. Users - это массив экземпляров User. Класс User имеет свойства UserId и UserName.

Можно ли заполнить такую ​​иерархию одним оператором LINQ и как это будет выглядеть?

Спасибо за миллион

Ответы [ 2 ]

5 голосов
/ 26 ноября 2008

Проверьте это, надеюсь, это поможет

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);
}
0 голосов
/ 26 ноября 2008

Есть - посмотрите методы GroupBy и Select.

...