Cookie Consent by Free Privacy Policy Generator
Privacy
Polipone
<ottobre 2024>
lunmarmergiovensabdom
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910
Immagini

Ordinare una List di oggetti

Per ordinare una List di oggetti è necessario usare delle classi di appoggio che implementano l'interfaccia IComparer.
Facciamo un esempio: ho una lista di squadre di calcio, con i relativi punti in classifica. Questa la mia classe:
    class CClassifica
    {
        public string SQUADRA { get; set; }  
        public int PUNTI { get; set; }         
    }
Questa la classe che implementa l'interfaccia IComparer:
    class MyOrderingClass : IComparer<CClassifica>
    {
        public int Compare(CClassifica x, CClassifica y)
        {
            int compareDate = y.PUNTI.CompareTo(x.PUNTI);
            if (compareDate == 0)
            {
                return x.SQUADRA.CompareTo(y.SQUADRA);
            }
            return compareDate;
        }
    }
Notare che viene fatta la comparazione tra il valore del campo PUNTI, e nel caso ci sia un'uguaglianza, allora viene fatta la comparazione per il campo SQUADRA: ovvero, in caso di squadre a paripunti la classifica viene ordinata per ordine alfabetico.

Ora carico nella mia lista alcuni dati:

    List<CClassifica> myList = new List<CClassifica>();
    CClassifica myCl = new CClassifica();
    myCl.SQUADRA="Roma";
    myCl.PUNTI=30;
    myList.Add(myCl);

    myCl = new CClassifica();
    myCl.SQUADRA="Lazio";
    myCl.PUNTI=27;
    myList.Add(myCl);


    myCl = new CClassifica();
    myCl.SQUADRA="Inter";
    myCl.PUNTI=29;
    myList.Add(myCl);

    ...
Per ordinare questi dati creo un oggetto di tipo MyOrderingClass e richiamo il metodo sort della lista passando come parametro l'oggetto creato:
    IComparer<CClassifica> comparer = new MyOrderingClass();
    myList.Sort(comparer);
Risultato finale:
    Roma     30
    Inter    29
    Lazio    27
Roma campione d'italia (speriamo!)

Notifiche