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

C# 在多对多情况下返回实体列表的最佳方法,c#,linq,entity-framework,C#,Linq,Entity Framework,我真的不知道如何正确命名这个问题,所以请随意编辑 我有一个非常简单的数据库模型,它在User和UserGroup之间有多对多的关系。现在它工作得很好,但我返回他所属的组列表的方式并不太漂亮。我认为有更好的方法可以通过LINQ调整或类似的方式来实现这一点 到目前为止,这也是我所拥有的——它是有效的,但我认为一个查询就可以做到这一点 public virtual List<UserGroup> UserGroups { get { var _db = ne

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

我有一个非常简单的数据库模型,它在
User
UserGroup
之间有多对多的关系。现在它工作得很好,但我返回他所属的组列表的方式并不太漂亮。我认为有更好的方法可以通过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;
    }
}
公共虚拟列表用户组
{
得到
{
var_db=new MainDataContext();
var userGroupUsers=_db.userGroupUsers.Where(x=>x.UserId==Id);
var userGroups=新列表();
userGroupUsers.ToList().ForEach(x=>
{
添加(x.UserGroup);
});
返回用户组;
}
}
您应该使用

你应该使用


谢谢。效果更好。非常感谢。效果更好。
return _db.UserGroupUsers.Where(x => x.UserId == Id)
                         .Select(t => t.UserGroup)
                         .ToList();