[SalesForce] Get User ids of all members of multiple queues

In my org we have few queues with name like salesA, salesB…
And i was trying to get all members (ids) of these salesqueue

List<Group> Salesqueues =  [SELECT Id, name FROM Group WHERE type='Queue' and Name like '%Sales%'];Map<Id,GroupMember> Salesmembers = new Map<Id,GroupMember>(); 
for(GroupMember sgm : [SELECT Group.Name, UserOrGroupId FROM GroupMember WHERE GroupId IN:Salesqueues.Id ])
{
  Salesmembers.put(sgm.UserOrGroupId,sgm);
}

but i got error in for loop line : Error: Initial term of field expression must be a concrete SObject: List<Group>

So i think i need to loop through Salesqueues.Id one by and inside that for loop get its members using SOQL. But this is wrong approach and i might hit the SOQL Limit, so what would be the best approach to get all queuemebers id's where queue name contains 'Sales'

Thanks a lot for suggestions:)

Best Answer

Your problem is here: IN:Salesqueues.Id. Salesqueues is a collection of Group sObjects and you need a collection of Id's insted. Try the following:

Map<Id,Group> Salesqueues = new Map<Id,Group> ([SELECT Id, name FROM Group WHERE type='Queue' and Name like '%Sales%']);
Map<Id,GroupMember> Salesmembers = new Map<Id,GroupMember>(); 

for(GroupMember sgm : [SELECT Group.Name, UserOrGroupId FROM GroupMember WHERE GroupId IN:Salesqueues.keySet() ])
{
    Salesmembers.put(sgm.UserOrGroupId,sgm);
}
Related Topic