You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,逐个将Id和DeveloperName存入目标Map:

// 查询所有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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:45:37