0

我正在尝试在集合内的集合中选择几个字段。Roles->Users (name and ID) 我能够使用 select many 获得扁平化数据,但现在我需要将它合并回一个集合对象,以便我的 json 格式正确。如果可能的话,我想在动态 linq 中执行此操作,否则我可能不得不手动将对象重新合并在一起。任何帮助都会很棒。

User->User_Roles->Roles(以User_Role为连接表的多对多关系)

q = query.SelectMany("USER_ROLES","new (inner as myUSER,outer as myROLE) ").SelectD("new (myROLE.ID as ROLE_ID, new( myROLE.NAME, myUSER.USER.FIRSTNAME,myUSER.USER.ID)as user)")

结果如下所示:

 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
4

2 回答 2

0

我是 JSON 新手,但可以说你已经拥有了这些项目的集合

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

你会得到一个IGrouping<TRole, TUser>像这样的

Role A ->     User A
              User B
              User C
Role A ->     User D
              User E
              User F
... and so on
于 2012-10-02T15:24:11.207 回答
0

在 SelectMany 之前使用 GroupBy 以获得您正在寻找的结果。

就像是:

User_Roles.GroupBy(r => r.Roles.Role)
            .Select(g => new { Role = g.Key, Users = g.SelectMany(u => u.Users.Name) });
于 2012-10-02T18:52:41.927 回答