LINQ查询帮助 - 多对多相关

时间:2011-06-27 20:33:16

标签: linq entity-framework linq-to-entities fluent-interface

在我的数据库中,我有一个用户表和一个工作组表,以及一个多对多的关系。用户可以属于一个或多个工作组。我正在为我的ORM使用实体框架(EF 4.1 Code First)。

用户表有用户:

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)?

谢谢,

1 个答案:

答案 0 :(得分:2)

这是一般性的想法(因为我不知道User和WorkGroup实体的属性)

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