Entwickler-Ecke

WinForms - List sortieren


uwe1234 - Fr 26.08.11 23:31
Titel: List sortieren
Hallo zusammen,

ich habe eine

C#-Quelltext
1:
List<Panel> panelList = new List<Panel>();                    

in der ich Panels hinzufüge.
Wie kann ich die Liste nach dem Namen der Panels sortieren. Die Panels haben einen Namen mit einer fortlaufende Nummer. Leider werden die Panels nicht der Reihe nach eingetragen.
Für einen Tipp wäre ich dankbar, den ich hänge schon eine Weile an dem Problem.

Gruß Uwe


Yogu - Sa 27.08.11 00:38

Hallo,

mit Lambda-Ausdrücken geht das recht schön:


C#-Quelltext
1:
panelList.Sort((left, right) => left.Name.CompareTo(right.Name));                    


Besser zu verstehen ist allerdings die ausformulierte Variante:


C#-Quelltext
1:
2:
3:
4:
5:
private void comparePanels(Panel left, Panel right) {
  return left.Name.CompareTo(right.Name);
}

panelList.Sort(comparePanels);

Grüße,
Yogu


uwe1234 - Sa 27.08.11 18:05

Hallo,

danke für die Hilfe. Ich habe es versucht. Kann es sein das es mehrmals durchlaufen muss damit es "komplett" sortiert ist?
Ich habe es versucht und mir im debugger die Liste angeschaut. Diese war leider nicht richtig sortiert.

Gruß Uwe


Kha - Sa 27.08.11 18:07

Dann hätte die Methode den Namen wohl nicht verdient. Du bist dir bewusst, dass die Sortierung von Yogu lexikografisch ist?


Th69 - So 28.08.11 09:40

Hallo Uwe,

wenn du die Panels als

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
panel1
panel2
...
panel9
panel10
panel11
...
panel20
...

anstatt alphanumerisch

Quelltext
1:
2:
3:
4:
5:
6:
7:
panel1
panel10
panel11
panel2
panel20
...
panel9

sortieren lassen willst, dann lautet das Stichwort dafür "Natürliche Sortierung" (Natural Sort), z.B. http://www.interact-sw.co.uk/iangblog/2007/12/13/natural-sorting


uwe1234 - So 28.08.11 13:28

Hallo Th69,

so was habe ich gesucht. Ich habe aber die Antwort von Yogu verwendet. Nachdem ich verstanden habe das die Sortierung
"lexikografisch", danke google :wink:, ist, habe ich meine Panel von panel1 auf panalAA etc. umgetauft. Für mein
Problem funktioniert das ebenso. Trotzdem Danke für den Link, ganz interessant.

by the way: Kann mir jemand ein gutes Buch zum Thema C# und OOP empfehlen? Ich tue mich noch etwas schwer mit der Denkweise von OOP.

Gruß Uwe


Yogu - So 28.08.11 16:54

user profile iconuwe1234 hat folgendes geschrieben Zum zitierten Posting springen:
Kann mir jemand ein gutes Buch zum Thema C# und OOP empfehlen? Ich tue mich noch etwas schwer mit der Denkweise von OOP.

Das Galileo Openbook Visual C# 2010 [http://openbook.galileocomputing.de/visual_csharp_2010/] empfehle ich immer wieder gerne. Fängt mit den Grundlagen an, enthält dann fortgeschrittene Sprachkonstrukte und rundet alles mit WPF ab.

Für die Grundlagen von OOP gibt's auch ein Openbook [http://openbook.galileocomputing.de/oo/].


uwe1234 - Di 30.08.11 17:50

Hallo Yogu,

danke für die Tipps.

Gruß Uwe