在多对多情况下返回实体列表的最佳方法

时间:2013-06-25 14:12:49

标签: c# linq entity-framework

我真的不知道如何正确命名这个问题,所以随时可以编辑。

我有一个非常简单的数据库模型,它在UserUserGroup之间具有多对多关系。现在它工作得很好但是我返回他所附的组列表的方式并不太漂亮。我认为有一些更好的方法可以使用LINQ调整或类似的东西来做到这一点。

这是我到目前为止所做的,它再次起作用,但我认为这可以用一个查询。

public virtual List<UserGroup> UserGroups
{
    get
    {
        var _db = new MainDataContext();
        var userGroupUsers = _db.UserGroupUsers.Where(x => x.UserId == Id);
        var userGroups = new List<UserGroup>();
        userGroupUsers.ToList().ForEach(x =>
        {
            userGroups.Add(x.UserGroup);
        });

        return userGroups;
    }
}

1 个答案:

答案 0 :(得分:1)

您应该使用Select

return _db.UserGroupUsers.Where(x => x.UserId == Id)
                         .Select(t => t.UserGroup)
                         .ToList();