Array einer Struktur sortieren



  • Ich habe einen Array einer Struktur mit Datumsangabe und weiteren Werten

    private struct Tabelle
    {
        public DateTime Date;
        public double   Value;
        ...
    };
    private int max = 100;
    private int index = 0;
    private Tabelle[] tabelle;
    ...
    tabelle = new Tabelle[max];
    ...
    // wahlfreies Füllen des Arrays
    // index = Anzahl Elemente
    

    Dieser Array soll nach dem Datum Date sortiert werden. Geht das einfach oder soll ich z.B. Quicksort auf das nach integer umgewandelte Datum (jjjjmmdd) einsetzen?



  • LINQ?



  • Hallo,

    am einfachsten ist wohl:

    Array.Sort(tabelle, (x, y) => DateTime.Compare(x.Date, y.Date));
    

    Besser wäre aber eine generische List<Tabelle>, auf die du dann Sort anwenden kannst.

    P.S: Intern verwendet Sort den Quicksort-Algorithmus.

    PPS: LINQ hat hiermit aber nichts zu tun...



  • Wieso soll das nichts mit LINQ zu tun haben?! Das was hier oben an Code steht hat nichts mit LINQ zu tun aber man könnte es mit LINQ lösen. Was hast du also gegen LINQ? Arrays würde ich eh nicht mehr verwenden. Und wenn es doch einer sein muss, dann hilft auch ein "ToArray()" am Ende.



  • Was hat Sortieren mit LINQ (Language Integrated Query) zu tun?

    P.S. Ich weiß wohl worauf du hinauswillst: "order by", aber dies halte ich für die falsche Vorgehensweise hierbei (nämlich wo es hier um Inplace-Sortierung geht).



  • Danke für die Antworten! Ich denke, ich mache aus der Struktur eine vollwertige Klasse mit dem Index als Member und lege für die Werte (Datum, etc.) eigenständige Arrays an. Dann schmeisse ich einen Sort mit Rückgabe der Sortierreihenfolge auf das int-Datum an - der Fisch ist gegessen und ich brauche nicht weiter nachzudenken. Hat zudem den Vorteil, dass die Klasse weitere Aufgaben für die Verwendung der Tabelle übernehmen kann.


Anmelden zum Antworten