var groupids=dB.Groups.Where(p=>p.Employess_Id==1).Select(p=>p.GroupId);
var teamIds=dB.Teams.Where(p=>groupIds.Contains(p.Id)).Select(p=>p.Id);
var result=db.Documents.Where(p=>p.Document_Type==4&&teamIds.Contains(p.Id));
---------------------------
你这样嵌套了两层,sql的效率很差的,用join好些
SELECT T1.*
FROM Documents T1
INNER JOIN Team_documents T2
ON T1.Id=T2.Team_Id
INNER JOIN Groups T3
ON T2.Team_Id =T3.Groupid
WHERE
T1.Document_type=4 AND T3.Employess_id=1
这样sql用linq里面的join 一样,就不写了:)
//假设DataContext为TestDbDataContext
TestDbDataContext context = new TestDbDataContext();
var query = from document in context.documents
where (document.document_type == 4
&& (from team_dcoument in context.team_documents
where (
from team in context.teams
where (
from gp in context.groups
where gp.employess_id == 1
select gp.groupid
).Contains(team.id)
select team.id
).Contains(team_dcoument.team_id)
select team_dcoument.document_id
).Contains(document.id))
select document;