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:
Posta un commento