Andrea Azzola

Technology, Personal Development and Financial Independence

Ricavare una Map da una lista di SObject in Apex

Posted on [Permalink]
Le mappe in Apex sono collezioni chiave valore. Di seguito come ricavare implicitamente una Map da una List di SObject

Le mappe in Apex sono liste chiave valore in cui la chiave ed il valore possono essere di qualsiasi tipo. Per esempio, di seguito vedremo una Map composte da tipi Id e SObject, ottenute grazie ad una SOQL query.

Snippet

Map<Id, SObject> testMap = new Map<Id, SObject>([SELECT FirstName, LastName FROM Contact LIMIT 5]);

System.debug(testMap.keySet()); //prints all retrieved Ids

for(Id contactId :testMap.keySet()) {
    Contact testContact = (Contact)testMap.get(contactId); //gets each SObject by Id
	System.debug(testContact.FirstName + ' ' + testContact.LastName);
}

Alla prima riga, testMap viene assegnata implicitamente, é una feature propria di Apex, mentre la clausola LIMIT ha l'unica finalitá di ridurre il dataset. É infatti consigliabile contenere l'uso di mappe di SObject, in modo che se i volumi scalano, non si va a gravare sul consumo di risorse.

keySet() and values()

Il tipo Map ha principalmente metodi d'istanza, di cui alcuni possono rivelarsi particolarmente comodi:

  • keySet() - restituisce un Set di chiavi
  • values() - restituisce una List di valore (in ordine arbitrario)
  • get(Id key) - restituisce i valori alla posizione rappresentata da key

Da notare che nonostante l'Id non faccia parte della selezione SOQL, il motore di query lo include.

Categories: ASP.NET