Oggi voglio illustrarvi un metodo molto facile, utile e veloce per ordinare una lista.

In particolari casi, abbiamo bisogno di avere una lista ordinata in base ad un numero crescenete.

La situazione può essere facile, se i dati vengono inseriti in ordine.

esempio

 

1  Ciao

1  Ciao (Duplicato)

2  Come

3 Stai?

3 Stai? (Duplicato)

 

 

Ma se per un problema anomalo ci ritroveremo con un qualcosa del genere?

 

3 Stai?

1 Ciao

2 Come

1 Ciao (Duplicato )

3 Stai? (Duplicato)

 

Anziché crearci un ciclo, e scorrere elemento per elemento per poi ordinali,

verificare eventuali duplicati etc, in questo esempio utilizzeremo il LinQ. Che ci aiuterà molto in questo problema.

In primo lugo, questo sistema e molto utile se noi abbiamo una struttura, e non una semplice lista.

Ordinare una semplicissima lista ci basterebbe utilizzare il metodo Sort().

Ma se abbiamo una struttura le cose cambiano.

 

1) Eliminazione dei Duplicati.

 

 

struct Prova
{

 public string Nome;
 public int ID;
 

}

List prova = new List<Prova>();

prova = prova.Distinct().ToList<Prova>();

 

 

2) Ordiniamo con il LinQ

 

 

var ordinati = from Prova in prova
                    orderby Prova.ID
                    select Prova;



//Forziamo il compilatore a determinare che la variabile ordinati è una lista

prova = ordinati.ToList<Prova>();

 

 

La nostra lista adesso è pronta, previa di duplicati ed ordinata correttamente.