2010-08-31 60 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);