2011-06-27 10 views
2

私のデータベースには、ユーザーテーブルとワークグループテーブルと多対多の関係があります。ユーザーは1つまたは複数のワークグループに所属することができます。 ORM(EF 4.1コードファースト)のエンティティフレームワークを使用しています。 与えられたユーザ:LINQクエリヘルプ - 多対多関連

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 

があるのエントリがあります。

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

ワークグループテーブルは、ワークグループがあります。

ユーザー表は、ユーザーがいます4、それはワークグループA、C に属し、ユーザーに

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

と共通のユーザーの個別のセットは、私が(好ましくは流暢APIで)LINQ文を書くにはどうすればよい1,2,3,4,5,6,8,10

ですこのため?

(私は、ユーザーおよびワークグループエンティティのプロパティを知らないので)ここでは一般的な考えですが、

答えて

2

ありがとう

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

は返事をありがとう...しかし、私は持っています"Distinct"部分のトラブル。 SelectManyはIQUeryable を返します - 上記のクエリの結果は私に戻って返します。たとえば、2つのIList です。思考? – Raymond

+0

私はそれを理解したと思う...私はクエリの両方の部分でSelectManyを使用する必要があります。 – Raymond

+0

Ah。 2番目の 'SelectMany()'が見つかりませんでした。 –