求助:如何解决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
相关产品推荐
相关产品推荐

