我有ViewModel
UserGroup.cs
public class UserGroup
{
public User User { get; set; }
public List<Group> Groups { get; set; }
}
我想拥有User
和所有相关的Groups
。问题是,query
返回的所有用户都有重复的副本,如果与他相关的组超过1个(当然是可以预期的)。我想到的第一件事是通过单个查询获取所有用户,然后让每个用户获取与他相关的组并将其推入列表。但是我正在寻找一种更好的方法(如果有)。
关系是与联结表建立的。
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
答案 0 :(得分:0)
我敢肯定有人会提供更优雅的解决方案,但是我已经使用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 }
}
);
我尝试使用您的对象名称。希望我没有犯任何错误