【发布时间】:2018-10-25 17:47:16
【问题描述】:
我通过 Linq 查询来获取用户并添加 UserClaimCollection。
public async Task<List<User>> GetCollection()
{
List<User> result = _identityContext.Users
.GroupJoin(
_identityContext.UserClaims,
u => u.Id,
uc => uc.UserId,
(u, uc) => new { user = u, claims = uc })
.ToList()
.Select(u => new User(
new Guid(u.user.Id),
u.user.UserName,
u.user.FirstName,
u.user.LastName,
u.user.Email,
new UserClaimCollection(
u.claims.Select(uc => new UserClaim(uc.ClaimType, uc.ClaimValue)).ToList()
))
).ToList();
return result;
}
如何向此选择添加第二个 GroupJoin 以添加角色集合?
例如
public async Task<List<User>> GetCollection()
{
List<User> result = _identityContext.Users
.GroupJoin(
_identityContext.UserClaims,
u => u.Id,
uc => uc.UserId,
(u, uc) => new { user = u, claims = uc })
.GroupJoin(
_identityContext.UserRoles,
u => u.Id,
ur => ur.UserId,
(u, ur) => new { user = u, roles= ur })
.ToList()
.Select(u => new User(
new Guid(u.user.Id),
u.user.UserName,
u.user.FirstName,
u.user.LastName,
u.user.Email,
new UserClaimCollection(
u.claims.Select(uc => new UserClaim(uc.ClaimType, uc.ClaimValue)).ToList()
)),
new UserRoleCollection(
u.roles.Select(ur => new UserRole(ur.RoleType, ur.RoleValue)).ToList()
))
).ToList();
return result;
}
【问题讨论】:
-
您应该在第二个
GroupJoin中有u => u.user.Id。记住第一个GroupJoin的输出是什么。你应该有包括所有的输出。