在System.Linq.Dynamic或可能不同的解决方案中选择多个对象后,如何将对象合并到一起?

在System.Linq.Dynamic或可能不同的解决方案中选择多个对象后,如何将对象合并到一起?,linq,linq-to-entities,dynamic-linq,Linq,Linq To Entities,Dynamic Linq,我试图在集合中的集合中选择几个字段。角色->用户(名称和ID)我可以使用selectmany获得扁平化数据,但现在我需要将其合并回集合对象,以便正确格式化json。如果可能的话,我想在动态linq中这样做,否则我可能不得不手动将对象合并到一起。任何帮助都会很好 用户->用户角色->角色(与用户角色作为联接表的多对多关系) 结果如下所示: Role A-> User A Role A-> User B ..notice the repeat of "Role A" Rol

我试图在集合中的集合中选择几个字段。角色->用户(名称和ID)我可以使用selectmany获得扁平化数据,但现在我需要将其合并回集合对象,以便正确格式化json。如果可能的话,我想在动态linq中这样做,否则我可能不得不手动将对象合并到一起。任何帮助都会很好

用户->用户角色->角色(与用户角色作为联接表的多对多关系)

结果如下所示:

 Role A-> User A
 Role A-> User B    ..notice the repeat of "Role A" 
 Role A-> User C
应该是

     Role A -> User A
             + User B
             + User C

我是一个JSON noob,但假设您已经准备好了一个项目集合

Role A-> User A
Role A-> User B
Role A-> User C
Role B-> User D
Role B-> User E
Role B-> User F
Role C-> User G
Role C-> User H
Role C-> User I
让我们说出它的名字

UserRoleCollection
只用

var res = UserRoleCollection.GroupBy(item => item.Role);
您将得到如下所示的
i分组

Role A ->     User A
              User B
              User C
Role A ->     User D
              User E
              User F
... and so on

在选择Many之前使用GroupBy可获得您想要的结果

比如:

User_Roles.GroupBy(r => r.Roles.Role)
            .Select(g => new { Role = g.Key, Users = g.SelectMany(u => u.Users.Name) });
User_Roles.GroupBy(r => r.Roles.Role)
            .Select(g => new { Role = g.Key, Users = g.SelectMany(u => u.Users.Name) });