Convertire una lista in un Dictionary utilizzando il metodo ToDictionary di LINQ

Stefano Mostarda

di Stefano Mostarda, in LINQ, il 23 settembre 2009 alle 08:00

Archiviato in:

Molto spesso capita di dover ricercare velocemente gli elementi in una lista. Sebbene una ricerca tramite LINQ sia semplice da scrivere, la sua efficacia in termini di performance non è ottimale in quanto internamente viene usato un semplice ciclo for.
La soluzione ottimale consiste nel creare un Dictionary dove la chiave è il campo di ricerca ed il valore la relativa istanza. In questo modo si può ricercare per chiave in maniera molto più rapida.

var List<Persona> persone = ...; 
persone.ToDictionary(p => p.CodiceFiscale);

In alcuni casi, nel value del Dictionary non si ha bisogno dell'intero oggetto ma solo di un campo o un sottoinsieme di campi. Per fare questo basta utilizzare il secondo overload del metodo ToDictionary. Questo metodo prevede un secondo parametro rappresentato da una lambda che esprime l'oggetto da mettere nel Value.

persone.ToDictionary(p => p.CodiceFiscale, p => new { p.Nome, p.Cognome });

IL CONTENUTO
IN PRIMO PIANO
MEDIA
IN EVIDENZA
MISC