我有这段代码:
Map<String, Account> Map_Account = new Map<String,Account>( [SELECT Name,Id
FROM Account
WHERE name = 'Any Company Name']);
System.debug('------Task Map List------' + Map_Task_Frequency);
System.debug('*****Task Map*****' + Map_Task_Frequency.get('Any Company Name'));
在Workbench中,我得到以下结果,我在Salesforce编码时也会遇到这些结果:
DEBUG|------Task Map List------{001g0000005PCWbAAO=Account:{Name=Any Company Name,
DEBUG|*****Task Map*****null
有人可以告诉我为什么当我在Map中传递字符串值时它会返回Null,即使Map中有明显的帐号吗?
非常感谢帮助!
由于
答案 0 :(得分:1)
问题是你的地图的密钥是Id,不是String,你可以从第一个调试消息中看到它。
答案 1 :(得分:0)
不幸的是,对于您的用例,Pavel所描述的完全正确 http://www.salesforce.com/us/developer/docs/apexcode/Content/langCon_apex_collections_maps_from_SObjects.htm
让你的代码以你想要的方式工作,必须重写
Map<String, Account> Map_Task_Frequency = new Map<String,Account>();
for(Account a: [SELECT Name,Id
FROM Account
WHERE name = 'Any Company Name'] ){
Map_Task_Frequency.put(a.Name, a);
}
System.debug('------Task Map List------' + Map_Task_Frequency);
System.debug('*****Task Map*****' + Map_Task_Frequency.get('Any Company Name'));
这没有多大意义,因为您将按名称引用您的帐户记录并且这是在您的WHERE条件下,因此您最终只会在地图上包含一个包含最后一个帐户的值。