c# - 使用 Entity Framework 从 2 个表返回数据

标签 c# .net entity-framework

我正在使用 MVC3 和 Entity Framework,但我到了需要来自不同表的更多数据的地步。通常我会做这样的事情来从表中获取数据:

Table: Users
id
username

在代码中我会做这样的事情来获取所有用户:

public static IEnumerable<Users> GetUsers( int userId )
{
    MyEntities ent = new MyEntities();

    return from g in ent.Users
           where g.OwnerUserId == userId
           select g;
}

所以这会让我所有的用户都回来。


但是用户可以加入一个组,我必须从特定组中获取所有用户名。

Table: userGroups
id
fk_user_id
fk_group_id

现在如果我使用这段代码:

public static IEnumerable<userGroups> GetUsersFromGroup( int groupId )
{
    MyEntities ent = new MyEntities();

    return from g in ent.userGroups
           where g.OwnerUserId == userId
           select g;
}

现在显然这只会返回“userGroups”表中的数据。但不知何故,我还需要用户表中的用户名。我如何才能获取该数据并仍然将我的“userGroups”作为 IEnumerable 返回?

在 SQL 中,我会简单地执行一个 LEFT JOIN,但我无法真正弄清楚它在这里是如何工作的。

最佳答案

可能是这样的:

var query = from g in ent.userGroups
            join u in ent.Users on g.fk_user_id equals u.userID
            select new { g, u, });

或者使用 LEFT JOIN

var query = (from g in ent.userGroups
             from u in ent.Users.Where(a => a.fk_user_id == u.userID).DefaultIfEmpty()
             select new { g, u, });

关于c# - 使用 Entity Framework 从 2 个表返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9977798/

相关文章:

.net - 如何回滚实体删除而不丢失导航属性

c# - jBCrypt 0.3 C# 端口 (BCrypt.net)

c# - 学习如何编写延迟关键、快速的 C++/Java/C# 代码的最佳方法?

c# - LINQ 与嵌套循环

c# - 更改按钮模板内的图像源

c# - Entity Framework N 层应用程序 - 如何设计

c# - MeshRenderer 和 Renderer 组件的区别

c# - 以编程方式启动 Azure 网站槽

c# - 异常 : When to use, 时序,整体使用

c# - 更改 EntityFramework 中的实体