2010-08-31 94 views
0

所以我有项目(对于这个例子说他们是名字和ID)。我也有一个名为SubProjects的表,如下所示:LINQ查询 - 复杂的自我加入问题

 
MasterProjectID  SubProjectID 
1      2 
1      3 
4      5 
4      6 
4      7 

一个主设备不能成为另一个主设备的子设备。

我想返回一个项目ID列表。具体来说,我希望列表包含主项目ID及其所有子项目ID。

换句话说,如果专案编号== 4和PDC是我的DataContext,我的查询应该返回:

 
4 
5 
6 
7 

下面的LINQ查询返回任何内容:

from j in pdc.Projects 
    join s in pdc.SubProjects on j.ProjectID equals s.SubProjectID 
    where j.ProjectID.Equals(projectID) || s.MasterProjectID.Equals(projectID) 
    select j.ProjectID; 

我在做什么错?

回答

0

你可以检索子项目的列表简单地:

var query = from j in pdc.SubProjects 
      where j.MasterProjectID == projectID 
      select j.SubProjectID; 

...然后手动附加/添加的projectID已知值。

var list = query.ToList(); 
list.Add(projectID);