Triggers 地图中的顶点地图
我需要在我的触发器中的一个映射中有一个映射。我知道最初如何构建地图,正如文件所述: Map addendums=新映射{} 然而,我在给多维贴图赋值时遇到了困难。通常我会使用.put将值放入一维映射中。也许我仍然应该使用这个函数,但我一辈子都搞不懂正确的语法 我尝试了以下不起作用的方法: 附录c,附录Id,附录 附录c,附录Id,附录 有人知道怎么做吗Triggers 地图中的顶点地图,triggers,salesforce,apex-code,Triggers,Salesforce,Apex Code,我需要在我的触发器中的一个映射中有一个映射。我知道最初如何构建地图,正如文件所述: Map addendums=新映射{} 然而,我在给多维贴图赋值时遇到了困难。通常我会使用.put将值放入一维映射中。也许我仍然应该使用这个函数,但我一辈子都搞不懂正确的语法 我尝试了以下不起作用的方法: 附录c,附录Id,附录 附录c,附录Id,附录 有人知道怎么做吗 谢谢 我找到了这样做的方法,尽管我不确定这是否是最有效的方法。因此,如果您有更好的解决方案,请让我知道,我会将解决方案贷记转移给您 我所做的是分
谢谢 我找到了这样做的方法,尽管我不确定这是否是最有效的方法。因此,如果您有更好的解决方案,请让我知道,我会将解决方案贷记转移给您 我所做的是分配第一张地图,然后将该地图放在最终地图中
// This line creates the map in the proper format
Map<Id,Map<Id,Addendum__c>> addendums = new Map<Id,Map<Id,Addendum__c>>{};
// This for loop goes through each addendum and first places it into a single dimension map.
// Once that map is created, it is placed into the final multi-dimensional
for(Addendum__c addendum : [SELECT Id,Opportunity__c FROM Addendum__c WHERE Opportunity__c IN :oppBatch]){
Map<Id,Addendum__c> thisAddendum = new Map<Id,Addendum__c>{ addendum.Id => addendum };
addendums.put(addendum.Opportunity__c,thisAddendum);
}
我找到了这样做的方法,尽管我不确定这是否是最有效的方法。因此,如果您有更好的解决方案,请让我知道,我会将解决方案贷记转移给您 我所做的是分配第一张地图,然后将该地图放在最终地图中
// This line creates the map in the proper format
Map<Id,Map<Id,Addendum__c>> addendums = new Map<Id,Map<Id,Addendum__c>>{};
// This for loop goes through each addendum and first places it into a single dimension map.
// Once that map is created, it is placed into the final multi-dimensional
for(Addendum__c addendum : [SELECT Id,Opportunity__c FROM Addendum__c WHERE Opportunity__c IN :oppBatch]){
Map<Id,Addendum__c> thisAddendum = new Map<Id,Addendum__c>{ addendum.Id => addendum };
addendums.put(addendum.Opportunity__c,thisAddendum);
}
Josh提供的方法效果很好。如果要删除一行代码,可以使用以下方法:
Map<Id, Map<Id,Addendum__c>> addendums = new Map<Id,Map<Id,Addendum__c>>();
for(Addendum__c addendum : [SELECT Id,Opportunity__c FROM Addendum__c WHERE Opportunity__c IN :oppBatch]){
addendums.put(addendum.opportunity__c, new Map<Id, Addendum__c>{addendum.id => addendum});
}
我不知道还有比这个更有效的方法。Josh提供的方法效果很好。如果要删除一行代码,可以使用以下方法:
Map<Id, Map<Id,Addendum__c>> addendums = new Map<Id,Map<Id,Addendum__c>>();
for(Addendum__c addendum : [SELECT Id,Opportunity__c FROM Addendum__c WHERE Opportunity__c IN :oppBatch]){
addendums.put(addendum.opportunity__c, new Map<Id, Addendum__c>{addendum.id => addendum});
}
我不知道还有比这更有效的方法。使用示例代码会有效,当然,第二级地图只能有一个条目,如果您需要更多条目,那么下面的代码将为您提供帮助:
// This line creates the map in the proper format
Map<Id,Map<Id,Addendum__c>> addendums = new Map<Id,Map<Id,Addendum__c>>{};
// This for loop goes through each addendum and first places it into a single dimension map.
// Once that map is created, it is placed into the final multi-dimensional
for(Addendum__c addendum : [SELECT Id,Opportunity__c FROM Addendum__c WHERE Opportunity__c IN :oppBatch])
{
if(addendums.get(addendum.Opportunity__c) == null)
{
addendums.put(addendum.Opportunity__c, new Map<Id, Addendum__c>{addendum.Id => addendum);
}
else
{
addendums.get(addendum.Opportunity__c).put(addendum.Id, addendum);
}
}
正如您所看到的,这将使用“在第一个地图上获取”来获取正确的第二级地图,我们希望在其中添加附录。使用示例代码将起作用,当然第二级地图只能有一个条目,如果您处于可能需要更多条目的情况下,则下面的代码将为您提供帮助:
// This line creates the map in the proper format
Map<Id,Map<Id,Addendum__c>> addendums = new Map<Id,Map<Id,Addendum__c>>{};
// This for loop goes through each addendum and first places it into a single dimension map.
// Once that map is created, it is placed into the final multi-dimensional
for(Addendum__c addendum : [SELECT Id,Opportunity__c FROM Addendum__c WHERE Opportunity__c IN :oppBatch])
{
if(addendums.get(addendum.Opportunity__c) == null)
{
addendums.put(addendum.Opportunity__c, new Map<Id, Addendum__c>{addendum.Id => addendum);
}
else
{
addendums.get(addendum.Opportunity__c).put(addendum.Id, addendum);
}
}
正如您所见,这使用“在第一张地图上获取”来获得正确的二级地图,我们希望在其中添加一个附录。感谢您的回复,我想我只需将其分开,以便在一年后不可避免地必须返回时更容易阅读。感谢您的回复,我想我会把它拆开,这样当我不可避免地要在一年后重温它时,它更容易阅读。