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

求助:如何解决List<Account>赋值给Map<Id,Account>的非法赋值错误

解决Illegal assignment from List to Map<Id,Account>错误

错误原因

你直接将List<Account>类型对象赋值给Map<Id, Account>类型变量,两种数据类型不兼容,触发Salesforce强类型检查错误。

解决方案

根据代码场景,选择以下修复方式:

场景1:List来自SOQL查询

使用Map<SObject>构造器,直接将查询结果List转换为Map:

// 错误写法
Map<Id, Account> accountMap = [SELECT Id, Name FROM Account];

// 正确写法(两种形式均可)
Map<Id, Account> accountMap = new Map<Id, Account>([SELECT Id, Name FROM Account]);

// 或拆分步骤
List<Account> accountList = [SELECT Id, Name FROM Account];
Map<Id, Account> accountMap = new Map<Id, Account>(accountList);

构造器会自动以每条Account记录的Id作为键,记录本身作为值生成Map。

场景2:手动构建的List

遍历List,逐个将元素存入Map:

List<Account> accountList = new List<Account>();
// 此处添加Account记录到list
Map<Id, Account> accountMap = new Map<Id, Account>();
for(Account acc : accountList) {
    accountMap.put(acc.Id, acc);
}

注意事项

确保List中的Account记录包含有效Id值(已插入数据库或手动设置Id的记录),避免存入Map时出现空键问题。

内容的提问来源于stack exchange,提问作者PasiMuthyala07

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:05:14