2013-08-01 89 views
0

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

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

我想获得某个用户的应用程序列表。对于exp:'雷神'在'复仇者'组中。 '复仇者组'有权使用这些应用程序'飞行','超级电源','雷击'等。

首先,我会加入'用户'表和'组'表来获得哪个组'托尔'在('复仇者'组)。然后加入'Group'表和'App'表以了解“复仇者”组可以访问哪些应用。然后,我会得到的应用程序为用户“雷神”

我目前的LINQ查询返回的所有应用程序(用户“雷神”不是应用程序)的列表

这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, 

           }, 
}; 
+1

你想要做什么? –

+0

我当前的查询返回所有应用程序。但我只想要user'Thor可以访问的应用程序 – kaboom

回答

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, 
}, 

这应该做适当的过滤。