giovedì 19 maggio 2011

.Net 4 ordinamento di stringhe in VB.Net e C#

Riporto l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_ordinamento-di-stringhe-in-microsoft-net_1039.aspx





Introduzione
In questo articolo, vedremo come ordinare gli elementi di un array, di una lista, e utilizzare la tecnologa linq, per ordinare i dati.



Quando si lavora con i dati o meglio con le array, si può avere la necessitià di averli ordinati in modo crescete o alfabetico, l’articolo, fornirà alcuni concetti basi di ordinamento di tali elementi, tramite il linguaggio di programmazione VB.Net e C#.



Ordinamento di array
Nel caso che dobbiamo ordinare un array di string, tramite il metodo sort della classe array, possiamo ottenere tale risultato.



Vediamo in questo frammento di codice, come dato un array di tipo string riguardante le città italiane, l’ordinamento



VB.Net



Private Sub BtnOrdinamento_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOrdinamento.Click



Dim citta As String() = {"Milano", "Ancona", "Roma", "Bologna", "Torino", "Palermo", "Como"}





'senza ordinamento



For contaElementi = 0 To citta.Length - 1



MessageBox.Show(citta(contaElementi))



Next



'con ordinamento



Array.Sort(citta)





For ContaCitta = 0 To citta.Length - 1



MessageBox.Show(citta(ContaCitta))



Next





End Sub













C#



private void BtnOrdinamento_Click(object sender, EventArgs e)



{



string[] citta = new string[] { "Milano", "Ancona", "Roma", "Bologna", "Torino", "Palermo", "Como" };



//senza ordinamento



for (int contaElementi = 0; contaElementi < citta.Length; contaElementi++)



{



MessageBox.Show(citta[contaElementi]);



}



//con ordinamento



Array.Sort(citta);



for (int ContaCitta = 0; ContaCitta < citta.Length; ContaCitta++)



{



MessageBox.Show(citta[ContaCitta]);



}



}







Come si è visto, tramite il metodo sort, della classe array, abbiamo ordinato gli elementi dell’array.



Ordinamento con Linq




In questo frammento di codice, vediamo come ordinare gli elementi di un array, utilizzando linq. Nel primo caso, vediamo come ordina in modo automatico, mentre nel secondo caso, siamo noi se scegliere in modo crescente o descrescente







VB.Net



Private Sub BtnOrderLinq_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOrderLinq.Click



Dim citta As String() = {"Milano", "Ancona", "Roma", "Bologna", "Torino", "Palermo", "Como"}



'senza ordinamento



For contaElementi = 0 To citta.Length - 1



MessageBox.Show(citta(contaElementi))



Next



'con ordinamento



Dim CittaOrdinate = (From Tab In citta



Order By Tab



Select Tab).ToArray()





For contacitta = 0 To CittaOrdinate.Length - 1



MessageBox.Show(CittaOrdinate(contacitta))



Next



End Sub





C#



private void BtnOrderLinq_Click(object sender, EventArgs e)



{



string[] citta = new string[] { "Milano", "Ancona", "Roma", "Bologna", "Torino", "Palermo", "Como" };



//senza ordinamento



for (int contaElementi = 0; contaElementi < citta.Length; contaElementi++)



{



MessageBox.Show(citta[contaElementi]);



}



//con ordinamento



var CittaOrdinate = (from a in citta



orderby a



select a).ToArray();



for (int contaCitta = 0; contaCitta < CittaOrdinate.Length; contaCitta++)



{



MessageBox.Show(CittaOrdinate[contaCitta]);



}







}






Qui di seguito l’utilizzo di ordinamento tramite Linq ma in modo decrescente.




VB.Net



Private Sub btnOrderLinqDec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOrderLinqDec.Click



Dim citta As String() = {"Milano", "Ancona", "Roma", "Bologna", "Torino", "Palermo", "Como"}



'senza ordinamento



For contaElementi = 0 To citta.Length - 1



MessageBox.Show(citta(contaElementi))



Next



'con ordinamento



Dim CittaOrdinate = (From Tab In citta



Order By Tab Descending



Select Tab).ToArray()





For contacitta = 0 To CittaOrdinate.Length - 1



MessageBox.Show(CittaOrdinate(contacitta))



Next



End Sub







C#



private void btnOrderLinqDec_Click(object sender, EventArgs e)



{



string[] citta = new string[] { "Milano", "Ancona", "Roma", "Bologna", "Torino", "Palermo", "Como" };



//senza ordinamento



for (int contaElementi = 0; contaElementi < citta.Length; contaElementi++)



{



MessageBox.Show(citta[contaElementi]);



}



//con ordinamento



var CittaOrdinate = (from Tab in citta



orderby Tab descending



select Tab).ToArray();



for (int contaCitta = 0; contaCitta < CittaOrdinate.Length; contaCitta++)



{



MessageBox.Show(CittaOrdinate[contaCitta]);



}



}







Ordinamento di liste





Siamo giunti all’ultimo esempio di ordinamento.
In quest’ultimo frammento di codice, vedremo come ordinare una lista di tipo stringa, il tutto tramite il metodo Sort della classe lista.






VB.Net



Private Sub BtnOrderList_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOrderList.Click



Dim citta As List(Of String) = New List(Of String)(New String() {"Milano", "Ancona", "Roma", "Bologna", "Torino", "Palermo", "Como"})



'senza ordinamento



For Each CittaTrovata In citta



MessageBox.Show(CittaTrovata)



Next



'ordinamento



citta.Sort()



For Each CittaOrdinata In citta



MessageBox.Show(CittaOrdinata)



Next



End Sub





C#



private void BtnOrderList_Click(object sender, EventArgs e)



{



List<string> citta = new List<string>() { "Milano", "Ancona", "Roma", "Bologna", "Torino", "Palermo", "Como" };



//senza ordinamento



foreach (var cittaTrovata in citta)



{



MessageBox.Show(cittaTrovata);



}



//ordinamento



citta.Sort();



foreach (var CittaOrdinata in citta)



{



MessageBox.Show(CittaOrdinata);



}



}









Conclusioni
L’articolo ha voluto fornire le basi per l’ordinamento di dati, in particolare di stringe. I vari metodi e le classi messe a disposizione dal Framework, permettono operazioni più complesse, lasciamo al lettore di approfondire l’argomento trattato.


1 commento:

Anonimo ha detto...
Questo commento è stato eliminato da un amministratore del blog.