Ciao a tutti!
E' sempre stato utile e facile recuperare il "value" di un elemento di un Dictionary ma ora avrei necessità di recuperare la "Key"...è possibile?
Nella mia funzione ho l'id dell'elemento con il quale posso puntare allo stesso.
Ciao a tutti!
E' sempre stato utile e facile recuperare il "value" di un elemento di un Dictionary ma ora avrei necessità di recuperare la "Key"...è possibile?
Nella mia funzione ho l'id dell'elemento con il quale posso puntare allo stesso.
Banalmente, potresti eseguire un ciclo For sulle chiavi del dizionario (proprietà Keys) ed estrarre per ciascuna il valore corrispondente memorizzato nell'oggetto. Quando hai trovato l'elemento che coincide con il valore, la chiave corrente è quella cercata.
codice:For Each key As String In diz.Keys If diz(key) = valueToFind Then Return key End If Next
In alternativa, potresti sintetizzare il ciclo con una espressione LINQ.
codice:Dim query = From key In diz.Keys Let currentValue = diz(key) Where currentValue = valueToFind Select key Dim foundKey = query.FirstOrDefault()
Tieni a mente quanto ti è già stato detto, ossia che i valori potrebbero essere duplicati (a differenza delle chiavi), quindi decidi tu come gestire le casistiche, e anche il fatto che questo tipo di ricerche andrebbero ridotte al minimo, altrimenti tanto vale invertire chiave con valore o utilizzare un dizionario parallelo per velocizzare il processo.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Si Si ragazzi! I valori non possono essere duplicati perchè si tratta di un elenco "statico" che creo da codice (i valori non sono input utente quindi sono sempre quelli)!
Comunque sia alla fine ho scoperto la funzione keys(<indice>) che era proprio quello che cercavo!
Grazie!!