function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
User557User557 

compare value in custom field

I am new to SFDC, I have a program where I'm passing the values and I need to compare these values with a custom object field where it is present or not.

Here is my code,
public class CheckUtility {
    
        public static ID determineFeature(ID defaultPersonaID, String Email, String Industry, String Title, Decimal Revenue, Integer EmployeeCount) {
            
            ID fetrID = defaultFeatureID;
            String emailDomain = Email.split('@').get(1);           
            Feature__c[] features = new Feature__c[]{};
            features = [Select id, Industries__c, Title_Tags__c, Email_Domains__c, Company_Revenue_From__c, Company_Revenue_To__c, Employee_Count_From__c, Employee_Count_To__c FROM Feature__c ORDER BY lastModifiedDate DESC];
            Integer industriesFound = 0;
            for (feature__c p: features) {
         // checking if there is a matching feature based on email    
            System.debug('Email Domains = ' + p.email_domains__c);        
                 if (p.Email_Domains__c != null &&     
            p.Email_Domains__c.contains(emailDomain)) {
                     fetrID = p.ID;
                    break;
                 }
                 
                 if(p.Industries__c != null){ 
      //I am stuck compare the industry is present or not in the p.Industries__c (picklistdatatype)

                   System.debug('Industries' + p.Industries__c);        
                     fetrID = p.ID;
                    break;
                 }
            }                
    
            return fetrID;      
        }      
    }
I have Feature__c is a custom object. Feature__c.Industries__c custom field can have one value or multiple values.

ex:  Feature__c (object)
 
       id             | Industries__c
    a010b00000eERj4   | technology
    a010b00000eEYu4   | finance, biotechology
    a010b00000eHJj8   | chemical, healthcare, technology
input: technology
output : a010b00000eERj4 , a010b00000eHJj8

I want to check whether Industry (which is coming via value passed in determineFeature  ) is equal with how many Industries__c in Feature__c and send their fetrID's in response.
Himanshu.SFDCHimanshu.SFDC
You are running the For loop for all Features__c records , so you can not get both Ids output : a010b00000eERj4 , a010b00000eHJj8  at a time.You can use list and store both ids in that. Although you can check existing Insdustry using String.contains().

Try Sample code:
public class CheckUtility {
    
        public static ID determineFeature(ID defaultPersonaID, String Email, String Industry, String Title, Decimal Revenue, Integer EmployeeCount) {
            
            List<ID> fetrID = new List<ID>();
            String emailDomain = Email.split('@').get(1);           
            Feature__c[] features = new Feature__c[]{};
            features = [Select id, Industries__c, Title_Tags__c, Email_Domains__c, Company_Revenue_From__c, Company_Revenue_To__c, Employee_Count_From__c, Employee_Count_To__c FROM Feature__c ORDER BY lastModifiedDate DESC];
            Integer industriesFound = 0;
            for (feature__c p: features) {
         // checking if there is a matching feature based on email    
            System.debug('Email Domains = ' + p.email_domains__c);        
                 if (p.Email_Domains__c != null &&     
            p.Email_Domains__c.contains(emailDomain)) {
                     fetrID = p.ID;
                    break;
                 }
                 
             if(p.Industries__c != null &&  p.Industries__c.contains(Industry)){ 
                    //I am stuck compare the industry is present or not in the p.Industries__c (picklistdatatype)
                    fetrID.add(p.ID);       
                    //break;
                 }
        }                
    
            return fetrID;      
        }      
    }

 
NagendraNagendra (Salesforce Developers) 
Hi,

Multiselect picklist in the backend is just a text field with semicolon-separated values, so you can do something like:
Set<String> industries = new Set<String>() industries.addAll(String.split(p.Industries__c, ';')); if (industries.contains(Industry)) { ... }
BTW, this is redundant:
Feature__c[] features = new Feature__c[]{}; features = [Select id, (...)
As [SELECT] always returns list, even if it's empty.

Hope this helps.

Kindly mark this as solved if the reply was helpful.

Thanks,
Nagendra