Listen Sortieren

P

Pseudonymm

Hallo,

ich habe bereits einiges im internet gelesen, dass man eine Liste in c# anscheinend ganz leicht sortieren kann.
Leider bin ich neu in c# und weiß nicht genau wie das mit diesen Comparison geht.

Also ich habe eine eigene Cell-Klasse, welche eine Eigenschaft ID hat... also jede Zelle eine andere ID ...
nun würde ich gerne eine Liste<Cell> gerne nach dieser ID sortieren.
Wie geht das? Ein wenig Code-Beispiel wäre sehr hilfreich.

Danke

PS: des weiteren hat jede Zelle x und y koordinaten... ist es auch möglich nach disesen koordinaten zu sortieren?

Danke
KeinName
 
C#:
public static void Main()
     {
         List<Cell> liste = new List<Cell>();
         liste.Sort(new Cell_ID_Comparer());
     }
    
     private class Cell_ID_Comparer : IComparer<Cell>
     {        
         public int Compare(Cell x, Cell y)
         {
             if (x.ID < y.ID) return -1;
             if (x.ID > y.ID) return 1;
             return 0;
         }
     }
 
So wie Shakie vorschlägt.

Oder da du eh eine eigene Klasse hast könntest du bei dieser auch die Schnittstelle IComparable<T> implementieren.
Und dann einfach list.Sort() aufrufen.
Sort() schaut nämlich nach ob ein standrd comparer definiert wurde, welches du über die schnittstelle getan hast.
 
Um noch die dritte Variante in die Runde zu werfen:
Es gibt auch die Möglichkeit über ein Comparison-Delegate (eine Art Funktionspointer) die Vergleichsfunktion anzugeben.
C#:
        static void Main()
        {
            List<Cell> list = new List<Cell>();
            list.Sort(CompareCells);
        }

        private int CompareCells(Cell x, Cell secondCell)
        {
            if (x.ID < y.ID)
                return -1;
            if (x.ID > y.ID)
                return 1;
            return 0;
        }

Die schönste Variante wäre natürlich die von Spyke genannte. Die Variante über einen IComparer<T> oder eine Comparator Methode verwendet man (oder ich) eigentlich nur wenn die Objekte auf eine spezielle Weise sortiert werden soll, oder wenn die Klasse aus einem anderen Framework stammt.
 
Zurück