我正在使用 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/