1
我有3个表:LINQ to SQL和加入问题
USER
=====
USER_ID(PK)
FISRT_NAME
LAST_NAME
...
ROLES
======
ROLE_ID (PK)
NAME
USER_ROLES
==========
USER_ID(PK, FK)
ROLE_ID(PK, FK)
我想提取所有用户数据和他的所有角色(以逗号分隔)成单行。
Sometging这样的:
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;
我使用LINQ 2 SQL,我聚合函数收到错误:“无法转换lambda表达式委托类型“System.Func'因为一些返回类型i n该块不会隐式转换为委托返回类型“ –
2010-06-23 09:03:08
请参阅已更新的答案。以前的LINQ试图在整个匿名对象上执行聚集协调 - 我现在要求它只是简单地选择'RoleName'字段。 – 2010-06-23 09:54:41