Convertire una lista in un Dictionary utilizzando il metodo ToDictionary di LINQ
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 });






