w00*_*w00 6 .net c# entity-framework
我正在使用MVC3和实体框架,但我来到了一个点,我需要来自不同表的更多数据.通常我会做这样的事情从表中获取数据:
Table: Users
id
username
Run Code Online (Sandbox Code Playgroud)
在代码中,我会做这样的事情来获得所有用户:
public static IEnumerable<Users> GetUsers( int userId )
{
MyEntities ent = new MyEntities();
return from g in ent.Users
where g.OwnerUserId == userId
select g;
}
Run Code Online (Sandbox Code Playgroud)
所以这会让我所有的用户回来.
但是用户可以加入一个组,我必须从特定组中获取所有用户名.
Table: userGroups
id
fk_user_id
fk_group_id
Run Code Online (Sandbox Code Playgroud)
现在,如果我使用此代码:
public static IEnumerable<userGroups> GetUsersFromGroup( int groupId )
{
MyEntities ent = new MyEntities();
return from g in ent.userGroups
where g.OwnerUserId == userId
select g;
}
Run Code Online (Sandbox Code Playgroud)
现在显然这只返回"userGroups"表中的数据.但不知何故,我还需要Users表中的用户名.我怎样才能获得这些数据并仍然将我的"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, });
Run Code Online (Sandbox Code Playgroud)
或者用 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, });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17676 次 |
| 最近记录: |