Linq其中在条款
问题描述:
我有层次结构,其中部门包含团队和团队包含委托。我想要做的是获得一个给定部门下的代表名单。我试图这样做:Linq其中在条款
var teams = from tms in db.Teams
where tms.DepartmentID == DepartmentID
select tms;
var TeamDelegates = from tds in db.J_TeamDelegates
where tds.TeamID in teams.TeamID //error here
select tds;
但团队集合不允许您引用特定的属性,就好像它是一个集合。我想说的是“在团队集合中选择TeamIDs的所有代表”。
答
var TeamDelegates = from tds in db.J_TeamDelegates
where teams.Any(x => x.TeamID == tds.TeamID)
select tds;
答
var TeamDelegates = db.Teams
.Where(tms => tms.DepartmentID == DepartmentID)
.SelectMany(tms => db.J_TeamDelegates
.Where(tds => tds.TeamID == tms.TeamID))
答
我想你可以在这里使用一个连接。
var TeamDelegates = from tms in db.Teams
where tms.DepartmentID == DepartmentID
join tds in db.J_TeamDelegates on tms.TeamID equals tds.TeamID
select tds;
答
var delegates = db.Departments
.Where(department => department.ID == 123)
.SelectMany(department => department.Teams)
.SelectMany(team => team.Delegates);
虽然这直接回答这个问题,我认为这是值得一提的是我表达它(有两个'SelectMany'呼叫)的方法是要简单得多。 – 2013-02-20 18:11:53