Как правильно использовать GroupBy?

Данные, которые получаю изначально(2й и 3й обьект - это один и тот же пользователя с несколькими ролями)введите сюда описание изображения Как сгруппировать в новый объект, чтобы Guid и Login не повторялись, а роли хранились в коллекции?

    public class UserInfo
    {
        /// <summary>
        /// Идентификатор пользователя
        /// </summary>
        public string Guid { get; set; }

        /// <summary>
        /// Логин пользователя
        /// </summary>
        public string Login { get; set; }

        /// <summary>
        /// Права
        /// </summary>
        public IEnumerable<string> Rights { get; set; }
    }

Код ниже:

            var usersData = await _dbContext.Users
                .Join(_dbContext.UserRoles,
                      u => u.Id,
                      ur => ur.UserId,
                      (u, ur) => new
                      {
                          RoleId = ur.RoleId,
                          Guid = u.Id,
                          Login = u.Email
                      })
                .Join(_dbContext.Roles,
                    ur => ur.RoleId,
                    r => r.Id,
                    (ur, r) => new
                    {
                        Guid = ur.Guid,
                        Login = ur.Login,
                        Role = r.Name
                    }).ToListAsync();

            var data = usersData.GroupBy(x => x.Guid).Select(u => new UserInfo() { Guid = u.Key});

Метод должен возвращать коллекцию обьектов UserInfo


Ответы (0 шт):