我有ViewModel
用户组.cs
public class UserGroup
{
public User User { get; set; }
public List<Group> Groups { get; set; }
}
我想拥有User
和所有相关Groups
.问题是,如果有超过 1 个与他相关的组,query
会返回所有用户的重复项(当然这是预期的(。我想到的第一件事是使用单个查询获取所有用户,然后为每个用户获取与他相关的组并将其推送到列表中。但我正在寻找一种更好的方法(如果有的话(来做到这一点。
该关系与连接表建立。
SQL查询
SELECT u.UserName, ug.GroupName FROM auth.UserUserGroup uug
INNER JOIN [auth].[User] u ON u.UserId = uug.UserId
INNER JOIN auth.UserGroup ug ON ug.UserGroupId = uug.UserGroupId
我相信有人会有一个更优雅的解决方案,但我多次使用 Linq 构造分层对象
var dbRecords = repository.Get(userId); // However you are getting your records, do that here
var result = dbRecords.GroupBy(x => x.UserId)
.Select(g => new UserGroup
{
User = new User { UserName = g.First().UserName },
Groups = g.Select(y => new Group { GroupName = y.GroupName }
}
);
我尝试使用您的对象名称。希望我没有犯任何错误