2011-06-27 81 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()' –