Sortieren einer ArrayList



  • Hallo zusammen!

    Ich habe folgendes Problem: Eine ArrayList enthält viele Objekte vom Typ Test.

    Stark vereinfacht sieht dieses Objekt so aus:

    class Test
    {
        public string Description;
        public DateTime date;
    
        public Test(){ }
    }
    

    Jedes Objekt hat ein gültiges Datum. Die Objekte in der ArrayList sind durcheinander. Wie kann ich diese ArrayList nun nach dem Datum sortieren? Ich habe gerade Logik-Probleme :-((

    Viele Grüße,
    Lukas



  • Du bindest die IComparable Schnittstelle in deiner Klasse ein und rufts die Sort()-Methode deiner ArrayList auf.

    class Test:IComparable
    {
        public string Description;
        public DateTime date;
    
        public Test(){ }
    
        public int CompareTo(object obj)
        {
              if(!(obj is Test)) return -1;
              return date.CompareTo(((Test)obj).date);
        }
    }
    


  • Wow... So einfach oder besser gesagt: so kurz 🙂 Das hätte ich nicht gedacht.

    Vielen Dank für deine gute und schnelle Hilfe!

    Viele Grüße,
    Lukas



  • Welche .NET-Version verwendest Du denn? Ab 2.0 solltest Du die `ArrayList` meiden und stattdessen die generische `List`-Klasse verwenden. Außerdem kannst Du dann auch das Sortieren vereinfachen, indem Du den `Comparison`-Delegate verwendest. Ab C# 3.0 geht's dann auch mit Lambda:

    myList.Sort((x, y) => x.date.CompareTo(y.date));
    


  • rdr_test_5;30;60


Anmelden zum Antworten