LINQ группировка / подзапрос для заполнения иерархической структуры данных
-
11-07-2019 - |
Вопрос
У меня есть 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 и как это будет выглядеть?
Спасибо миллион
Решение
Проверьте это, надеюсь, это поможет
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);
}
Другие советы
Есть - посмотрите методы GroupBy и Select.
Не связан с StackOverflow