Ordinamento di stringhe in Microsoft .Net 4 tramite VB.Net e C#

Articolo introduttivo all'ordinamento delle stringhe in Microsoft .Net 4.0.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

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.