0

我有 3 个实体应用程序、用户、组。他们都有很多很多的关系。它们具有以下属性

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

我想获取某个用户的应用程序列表。对于 exp:“雷神”在“复仇者联盟”组中。“复仇者联盟”可以访问这些应用程序“飞行”、“超能力”、“雷击”等。

首先,我将加入“用户”表和“组”表以获取“雷神”所在的组(“复仇者”组)。然后加入“组”表和“应用程序”表以了解“复仇者”组可以访问哪些应用程序。然后我会得到用户“雷神”的应用程序列表

我当前的 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,

                               },
};
4

2 回答 2

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

那应该做适当的过滤。

于 2013-08-01T18:40:33.060 回答
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();
于 2018-11-28T08:00:03.357 回答