2012-10-02 4 views
0

나는 컬렉션의 컬렉션에서 두 개의 필드를 선택하려고합니다. Roles-> Users (name and ID) select를 많이 사용하여 데이터를 병합 할 수 있었지만 이제 json이 올바르게 형식화되도록 컬렉션 객체에 다시 병합해야합니다. 가능하다면 나는 동적 인 linq에서 이것을하고 싶습니다. 그렇지 않으면 수동으로 다시 병합해야 할 수도 있습니다. 어떤 도움이라도 좋을 것입니다.System.Linq.Dynamic의 SelectMany 또는 다른 솔루션을 함께 사용하면 개체를 다시 병합 할 수 있습니까?

사용자 -> User_Roles->

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

(조인 테이블과 USER_ROLE 많은 관계 많은) 역할 결과는 다음과 같이 :

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 

답변

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 

은 'SelectMany는 결과를 얻을 전에 이름이

UserRoleCollection 

단지 당신이 IGrouping<TRole, TUser>

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

사용 GROUPBY처럼 보이는을 얻을 것이다

var res = UserRoleCollection.GroupBy(item => item.Role); 

을 사용할 수 있습니다 다시 찾고.

뭔가 같은 :

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