Как правильно использовать 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