function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
sadik Shaiksadik Shaik 

How to make a list of maps, for each map key has list of values


[Select Id,User.id,TeamMemberRole from AccountTeamMember where Account.Id =: currentacc ];


This code gives me (AccountTeamMember:{Id=01M0Q000000BOpJUAW, UserId=0051r000008izgPAAQ, TeamMemberRole=Deal Support - Product Management, AccountId=0010Q000003EwAaQAK}, AccountTeamMember:{Id=01M0Q000000A50ZUAS, UserId=0051r000008kFJRAA2, TeamMemberRole=Account Owner, AccountId=0010Q000003EwAaQAK})

And then i would like to get user details from the above user.id from User object and then Return a list of maps, for each map kay(Account team memberID: i want a list of user details and team member role.  How can ia cheive this. Below is my code 
 
List<AccountTeamMember> AccountTeamMemberList = [Select Id,User.id,TeamMemberRole from AccountTeamMember where Account.Id =: currentacc ];


 
Bhargavi TunuguntlaBhargavi Tunuguntla
Hi Sadik,

Just a clarification ----- do you need a map with AccountTeamMemberId as key and the value is the related user details? 

then it must be : Map<Id,user> ---- Id is AccountTeamMemberId  and user -- related record of AccountTeamMemberId

Thanks
sadik Shaiksadik Shaik
Something like this ({accountTeamMemberId:[someUserDetails,someAccountTeammemberDetails]},{accountTeamMemberId:[someUserDetails,someAccountTeammemberDetails]}) Thanks in advance
Bhargavi TunuguntlaBhargavi Tunuguntla
I think you can try the below:
 
List<AccountTeamMember> AccTeamMem=new List<AccountTeamMember>([Select Id,userid,user.id,User.name,TeamMemberRole from AccountTeamMember where Account.Id ='0017F00001DxhgP']);
system.debug('AccTeamMem'+AccTeamMem);
Set<Id> userids=new Set<Id>();
Map<Id,Map<String,User>> AccTeamUsers=new Map<Id,Map<String,User>>();
for(AccountTeamMember a:AccTeamMem)
{
   userids.add(a.userId); 
}
Map<Id,User> userList=new Map<Id,User>([Select id,name from User where id in:userids]);
for(AccountTeamMember a:AccTeamMem)
{
    Map<String,User> userMap=new Map<String,User>();
    userMap.put(a.TeamMemberRole,userList.get(a.userId));
   AccTeamUsers.put(a.id,userMap);
}
system.debug('AccoutTeam//UserDetails'+AccTeamUsers );

Its not possible to have user object record and other details in one value .So The above solution might be helpful to you.

Let me know for any queries.Hope this will be helpful.

Thanks
AshishkAshishk
Try this:-
Map<id,AccountTeamMember> AccountTeamMemberMap = Map<id,AccountTeamMember>([Select Id,User.id,User.Name, User.Email , .... tema mmebr fields.... TeamMemberRole from AccountTeamMember where Account.Id =: currentacc ]);
This way you will have map with id and object, where you can access user and team member fields, like member.User.Name or member.FieldName.

Hope this works.
Gulafsha MohammedGulafsha Mohammed
You can use a map<id,map<user,AccountTeamMember>> which will include both user details and accountTeamMember details.
Here you have to query the user details using user.id and store in user record of map.
Or you may use two maps:
map<id,userdetails>
map<id,accountTeamMemberdetails>

Please let us know if this helps.

Happy to help further.

Kindly mark this as solved if the reply was helpful.

Thanks,
Gulafsha