我有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,
},
};
答案 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();