linq加入了很多关系表

时间:2013-08-01 17:59:13

标签: asp.net-mvc linq many-to-many

我有3个实体App,User,Group。他们都有很多关系。它们具有以下属性

App: AppID, AppName
Group: GroupID, GroupName
User: UserID, UserName 

我想获得某个用户的应用列表。对于exp:'Thor'在'The Avengers'组中。 “复仇者小组”可以使用这些应用程序“飞行”,“超级大国”,“闪电打击”等。

首先,我加入'用户'表和'组'表来获取'Thor'所在的组('复仇者组')。然后加入“组”表和“应用”表,以了解“复仇者”组可以访问哪些应用。然后我将获得用户'Thor'

的应用列表

我当前的linq查询返回所有应用(不是用户'Thor'的应用)

这是linq查询

AppListViewModel apps = new AppListViewModel {
                Apps = from u in User
                               from g in u.Group
                               from a in g.App
                               where u.UserName=="Thor"
                               select new AppDTO {
                                   AppID=a.AppID,
                                   AppName=a.AppName,

                               },
};

2 个答案:

答案 0 :(得分:0)

为什么不使用连接:

from u in User
join g in u.Group on u.GroupID equals g.GroupID
from a in g.App on g.AppID equals a.AppID
where u.UserName=="Thor"
select new AppDTO {
    AppID=a.AppID,
    AppName=a.AppName,
},

应该进行适当的过滤。

答案 1 :(得分:0)

尝试一下:

var apps = (
   from u in User
   from g in u.Group
   from a in g.App
   where u.UserName == "Thor"
   select new AppDTO { AppID = a.AppID, AppName = a.AppName }
).ToList();