Triggers 需要优化这个触发器吗?有人能帮我吗。?

Triggers 需要优化这个触发器吗?有人能帮我吗。?,triggers,salesforce,test-class,apex-trigger,Triggers,Salesforce,Test Class,Apex Trigger,实际上,我正在尝试将Area_c字段从自定义对象zip代码中提取到lead对象自定义字段Area_c中。所以,我已经写了一些代码,但是有没有其他的方法来编写它或者对代码进行一些优化呢 trigger OpportunityPriceBook on Lead (before insert) { List<String> zipList = new List<String>(); for(Lead lead : Trigger.new){ zipList.add

实际上,我正在尝试将Area_c字段从自定义对象zip代码中提取到lead对象自定义字段Area_c中。所以,我已经写了一些代码,但是有没有其他的方法来编写它或者对代码进行一些优化呢

trigger OpportunityPriceBook on Lead (before insert) { 

List<String> zipList = new List<String>();

for(Lead lead : Trigger.new){

   zipList.add(lead.PostalCode);

}

List<Zip_Code__c> zipCodeList = [Select Id, Name, City__c, Area__c from 

Zip_Code__c WHERE Name IN : zipList];

for(Lead leads : Trigger.new){

    for(Integer i =0 ; i < zipCodeList.size(); i++)
      {
         leads.Area__c = zipCodeList.get(i).Area__c;
         leads.City = zipCodeList.get(i).City__c;
         break;
      }   

    }

  }

给定代码,有几种方法可以简化上一个多维for循环;嵌套for循环由于其指数性质,有时会出现问题

说到这里,您的代码中有一个非常明显的错误:嵌套for循环中没有标识条件语句,实际上每次都只设置第一个zipcode数据的前导

这是我将采取的方法:

// Extract out the postal codes of the leads
List<String> zipList = new List<String>();
for (Lead lead : Trigger.new) {
    zipList.add(lead.PostalCode);
}

// Query for the related Zip Codes, and map them by Name
List<Zip_Code__c> zipCodeList = [SELECT Id, Name, City__c, Area__c FROM Zip_Code__c WHERE Name IN :zipList];
Map<String, Zip_Code__c> zipCodeByName = new Map<String, Zip_Code__c>();
for (Zip_Code__c zipCode : zipCodeList) {
    zipCodeByName.put(zipCode.Name, zipCode);
}

// Stamp leads with the Area and City as identified by the matching Zip Code
for (Lead lead : Trigger.new) {
    Zip_Code__c zipCode = zipCodeByName.get(lead.PostalCode);
    lead.Area__c = zipCode.Area__c;
    lead.City = zipCode.City__c;
}

我很困惑这是要实现什么。你的嵌套for循环是多余的,因为它每次只从zipCodeList中获取第一个元素。你能按照你的想法增强它吗?或者优化它???ThanksTackOverflow是一个当你陷入一个可复制的问题时可以提问的地方。这不是一个离岸工作的地方。您在代码中看到了哪些低效的地方?你是否试图理解它/简化自己?你在哪里挣扎?