У меня есть map<Id,String> subMap, это идентификатор записи, где строка представляет собой имя Future_record__c, которое еще предстоит сделать после выноски.

Как пройти через subMap и получить Future_record__c по значению String. Нужно ли мне делать подцикл или что-то в этом роде?

У меня есть следующее в настоящее время:

List<Future_record__c> subList = [select id, Name, LastModifiedDate from Future_record__c where Name IN :stringNames];
        for (Id key : subMap.keySet()) {
              if (SubList.get(SubMap.value????).LastModifiedDate > ModifiedAfter) {
               //Do something 
           }
        }
1
Thomas 14 Фев 2020 в 09:03

2 ответа

Лучший ответ

Вы хотите использовать значение String в подкарте для идентификации записей future_record__c в подсписке, совпадающих по имени?

Измените подсписок на карту, где имя является ключом -

List<Future_record__c> subList = [select id, Name, LastModifiedDate 
                                 FROM Future_record__c where Name IN :stringNames];
Map<String, future_record__c> futureRecordNameMap = new Map<String, future_record__c>();
for(future_record__c futureRecord :subList){
     futureRecordNameMap.put(futureRecord.name, futureRecord);
}

Затем прокрутите значения подкарты, а не ключи, чтобы соответствовать нужным записям:

   for (String futureRecordName : subMap.values()) {
      if (futureRecordNameMap.get(futureRecordName).LastModifiedDate > ModifiedAfter) {
               //Do something 
      }
   }

ИЛИ, если вам для чего-то нужен ключ из подкарты, прокрутите ключи и просто получите значение из подкарты -

for (Id subMapKey: subMap.keySet()) {
      if (futureRecordNameMap.get(subMap.get(subMapKey)).LastModifiedDate > ModifiedAfter) {
               //Do something 
      }
   }
4
eaeaoo 14 Фев 2020 в 20:30

Вы можете использовать Dynamic Apex, get для вашего объекта для этого типа доступа.

Map<ID, Future_record__c> m = new Map<ID, Future_record__c>([select id, Name, LastModifiedDate from Future_record__c where Name IN :stringNames]);

for (Id key : subMap.keySet()) {
    if (m.containsKey(key)){
        Future_record__c fr = m.get(key);
        //If your field is of type String, you would cast it as below 
        String value = (String)fr.get(subMap.get(key));
        //Do something with the value
    }
}
0
Saroj Bera 14 Фев 2020 в 09:51
В моем случае map id является дочерней записью записи Stringvalue.
 – 
Thomas
14 Фев 2020 в 11:09
Не могли бы вы добавить некоторые подробности. Мне все еще не ясно, чего вы пытаетесь достичь.
 – 
Saroj Bera
14 Фев 2020 в 13:47
Карта. Id — это идентификатор другого объекта. Obj a= новый объект (Namefuturerecord='tobemade'). если (SubList.get('tobemade' ????).LastModifiedDate > ModifiedAfter)
 – 
Thomas
14 Фев 2020 в 17:47