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 });
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.