vorneweg: ArrayList gehört in die Mottenkiste und sollte wie alle untypisierten Collections aus System.Collections nicht mehr benutzt werden. Verwende stattdessen List<T> und alle anderen typisierten Collections aus System.Collections.Generic.
Hallo,
ich habe ein kleines Problem. Meine ArrayList beinhaltet mehrere Strings die mit einem Komma getrennt sind
ArLis.Add("12,13");
ArLis.Add("43,12");
ArLis.Add("21,13");
usw.
Nun wollte ich das Ganze aber mit ArLis.Sort() sortieren. Das brachte aber einen Fehler.
Eigentlich möchte ich auch nur aufsteigend nach den ersten beiden Zahlen vor den Komma sortieren.
Habt ihr einen Tipp wie ich das anstelle.
Grüße
HGallo indeopax,
Arraylisten sind veraltet. Du solltest eine Liste nehmen (System.Collections.Generic-Namespace).
Dann geht auch das Sort.
Ich sehe in
List<string> arlist = new List<string>();
arlist.Add("12,13");
arlist.Add("43,12");
arlist.Add("21,13");
arlist.Sort();
keinen Syntaxfehler. Nichts desto trotz solltest du dir mal den IComparer anschauen.
Sind aber alles Grundlagen.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hallo indeopax,
erstens ist eine ArrayList schlecht. Verwende hier eine generische Collection, bsp. List<T>. Da du immer Tuple einfügst würde ich für T die Klasse Tuple<string,string> wählen.
Sortieren kannst du es dann so (ungetestet):
List<Tuple<string,string>> liste = new List<Tuple<string,string>>();
liste.Add(new Tuple<string,string>("12","13"));
iste.Add(new Tuple<string,string>("43","12"));
iste.Add(new Tuple<string,string>("21","13"));
//sortieren mit Lamda-Ausdruck
//first und second sind die Tuple, die aktuell verglichen werden
liste.Sort((first,second)=>first.Item1.CompareTo(second.Item1));
Hallo indeopax,
wenn du schon eine Fehlermeldung bekommst, dann solltest du sie unbedingt immer (exakt) angeben, siehe [Hinweis] Wie poste ich richtig? Punkt 5.
Bitte beachte bei weiteren Fragen auch Punkt 1.1.1.
Dass ArrayList Mist ist und nicht mehr verwendet werden sollte, wurde schon gesagt.
Das voneweg noch kurz zu der Frage:
Wenn du nur nach einem Teil des Strings sortiert werden soll und dieser Teil auch noch als Zahl interpretiert werden soll, dann kannst du dir einen passenden IComparer<T> o.ä. schreiben und beim Aufruf der Sort-Methode angeben. In dem Comparer liest du den entsprechenden Teil aus den Strings (z.B. mit Regex), wandelst in eine Zahl um (z.B. mit int.Parse) und vergleichst die Resultate.
Es ist aber zu überlegen, ob du nicht - wie CSharperUser es andeutet - eine passendere Datenstruktur verwendest, wobei wenn du nach Zahlen sortieren willst, als Typparameter wohl eher int als String in Frage käme.
herbivore