У меня есть 3 таблицы:
USER
=====
USER_ID(PK)
FISRT_NAME
LAST_NAME
...
ROLES
======
ROLE_ID (PK)
NAME
USER_ROLES
==========
USER_ID(PK, FK)
ROLE_ID(PK, FK)
Я хочу извлечь все данные пользователя и все его роли (через запятую) в одну строку.
Примерно так:
1 | John | Smith | Power user, Administrator
2 | John | Doe | Guest
Я не знаю, как это сделать. Спасибо за вашу помощь.
изменить:
Я пробовал что-то вроде этого:
List<UserDTO> users = null;
using (CarShopDataContext dc = DB.GetContext())
{
users = (from u in dc.Users
select new UserDTO
{
UserId = u.UserId,
Username = u.Username,
FirstName = u.FirstName,
LastName = u.LastName,
Roles = ""
}).ToList();
foreach (var user in users)
{
var roles = (from ur in dc.UserRoles
join r in dc.Roles on ur.RoleId equals r.RoleId
where ur.UserId == user.UserId
select r.Name).ToList();
StringBuilder userRoles = new StringBuilder();
for (int j = 0; j < roles.Count; j++)
{
userRoles.Append(roles[j]);
if (j < roles.Count - 1)
userRoles.Append(", ");
}
user.Roles = userRoles.ToString();
}
}
return users;