2011-06-27 118 views
2

在我的數據庫中,我有一個用戶表和一個工作組表,以及一個多對多的關係。用戶可以屬於一個或多個工作組。我正在爲我的ORM使用實體框架(EF 4.1 Code First)。LINQ查詢幫助 - 多對多相關

用戶表具有用戶:

1,2,3,4,5,6,7,8,9,10 

工作組表有工作組:

A,B,C, D 

WorkgroupUser表中有項

A1, A2, A3, A4, A5 
B1, B3, B5, B7, B9 
C2, C4, C6, C8, C10 
D1, D2, D3, D9, D10 

我想什麼做的是: 鑑於用戶4,它屬於工作組A,C 並且有通信對用戶

1,2,3,4,5 (from workgroup A) and 
2,4,6,8,10 from workgroup C 

和獨特的集普通用戶的是1,2,3,4,5,6,8,10

我寫了LINQ聲明(最好用流利的API)怎麼辦爲了這?

謝謝

回答

2

這裏的總體思路(因爲我不知道用戶和工作組實體的屬性)

var result = context.users.Where(u => u.ID == 4) 
          .SelectMany(u => u.WorkGroups.SelectMany(wg => wg.Users)) 
          .Distinct() 
+0

感謝您的及時答覆...但我有麻煩與「不同」部分。 SelectMany返回IQueryable > - 因此上述查詢的結果將我返回,例如,TWO IList 。思考? – Raymond

+0

我想我想通了......我需要在查詢的兩個部分使用SelectMany。 – Raymond

+0

啊。錯過了第二個'SelectMany()' –