2015-09-11 142 views
0

我有这样的LINQ表达LINQ的包括不工作

ActionPlan 
    .Include(x => x.Goal) 
    .Include(x => x.Responsibles) 
    .Include(x => x.Goal.EducationalPlan) 
    .AsNoTracking() 
    .Where(x => x.State == State.Active && x.Goal.State == State.Active && x.Goal.EducationalPlan.State == State.Active) 
    .Where(x => x.Responsibles.Any(r => r.PersonId == pes_id)) 
    .Distinct() 
    .Select(x => x.Goal) 
    .ToList(); 

的包括EducationalPlan的是不工作的,为什么?所有其他工作都很规范, EducationPlan是一个对象而不是列表。

+1

是'goal'集合? –

+0

对我来说很好。你确定有一个与该目标相关的教育计划吗? –

回答

1

对于多层次的,你应该是这样的:

ActionPlan 
    .Include(x => x.Goal) 
    .Include(x => x.Responsibles) 
    .Include(x => x.Goal.Select(y => y.EducationalPlan)) 
    .AsNoTracking() 
    .Where(x => x.State == State.Active && x.Goal.State == State.Active && x.Goal.EducationalPlan.State == State.Active) 
    .Where(x => x.Responsibles.Any(r => r.PersonId == pes_id)) 
    .Distinct() 
    .Select(x => x.Goal) 
    .ToList(); 

或者试试这个:

ActionPlan 
    .Include(x => x.Goal) 
    .Include(x => x.Responsibles) 
    .Include("Goal.EducationalPlan") 
    .AsNoTracking() 
    .Where(x => x.State == State.Active && x.Goal.State == State.Active && x.Goal.EducationalPlan.State == State.Active) 
    .Where(x => x.Responsibles.Any(r => r.PersonId == pes_id)) 
    .Distinct() 
    .Select(x => x.Goal) 
    .ToList(); 
+0

是什么让你认为'Goal'是一个集合? – juharr

+0

但目标不是一个列表,是一个对象,thx – Malinosqui

+0

不工作两个,这很奇怪 – Malinosqui