Apex中如何将Group查询结果转为Map<Id, String>?
解决方案:将Group查询结果转为Map<Id, String>
Salesforce的Map构造器直接接收SObject列表时,只能生成键为Id、值为对应SObject实例的Map(比如Map<Id, Group>),无法直接映射到Map<Id, String>,你可以通过以下几种方式实现需求:
方法一:先转临时Map再遍历转换
先利用构造器生成包含完整Group实例的Map,再遍历提取DeveloperName字段构建目标Map:
// 先获取包含Group实例的临时Map Map<Id, Group> tempQueueMap = new Map<Id, Group>([SELECT Id, DeveloperName FROM Group WHERE Type = 'Queue']); // 初始化目标Map并填充数据 Map<Id, String> queuesMap = new Map<Id, String>(); for (Id queueId : tempQueueMap.keySet()) { queuesMap.put(queueId, tempQueueMap.get(queueId).DeveloperName); }
方法二:直接遍历查询结果列表
跳过临时Map,直接遍历查询返回的List
// 查询所有Queue类型的Group记录 List<Group> queueList = [SELECT Id, DeveloperName FROM Group WHERE Type = 'Queue']; // 初始化并填充目标Map Map<Id, String> queuesMap = new Map<Id, String>(); for (Group queue : queueList) { queuesMap.put(queue.Id, queue.DeveloperName); }
方法三:使用Stream API(API版本45及以上)
如果你的Salesforce组织支持Stream API,可以用更简洁的流式操作实现:
Map<Id, String> queuesMap = [SELECT Id, DeveloperName FROM Group WHERE Type = 'Queue'] .stream() .collect(Collectors.toMap( group -> group.Id, group -> group.DeveloperName ));
内容的提问来源于stack exchange,提问作者Ted
相关产品推荐
相关产品推荐

