Liste nach Kriterium sortieren

Cromon

Erfahrenes Mitglied
Hallo zusammen!

Ich möchte gerne eine Liste mit Dateien nach einem speziellen Kriterum soriteren. Diese Dateien sind alle vom Format:
lib-*.av

Zwischen - und . steht nur 1 Zeichen oder 1 Zahl. Ich erstelle jetzt so meine Liste:
Code:
String^ dataPath = basePath + "data";
array<String^>^ files = Directory::GetFiles(dataPath, "lib-*.av");
List<String^>^ validPatches = gcnew List<String^>();
Regex^ reg = gcnew Regex("lib-[a-zA-Z0-9].av", RegexOptions::IgnoreCase);

for each(String^ file in files)
{
	if(reg->IsMatch(file))
		validPatches->Add(file);
}

Die Einträge in validPatches müssen jetzt aber korrekt sortiert werden. Das Kriterium sieht folgendermassen aus:
  1. Absteigend sortiert
  2. Zu unterst müsste lib-0.av stehen
  3. Zu oberst müsste lib-Z.av stehen

Also: Zeichen ist weiter am Anfang (=kleiner?) als Zahl und grosser Buchstaben ist weiter am Anfang als kleiner Buchstaben.

Ich habe validPatches->Sort probiert mit einer Instanz des delegats System::Comparison<String^> allerdings wurde da ständig eine Exception geworfen wenn ich ausser String::Compare zurückzugeben irgendeine andere Aktion ausgeführt habe.

Was gibt es für Ansatzmöglichkeiten um die zu bewerkstelligen?

Gruss
Cromon
 
Was für eine Exception genau?
Wie schon richtig erkannt einfach von Comparer ableiten oder per delegate Comparison die Sortierung festlegen.
Vielleicht zeigst du einfach mal wie du sortieren wolltest.

Ansonsten ist der Comparer ja relativ einfach man muss nur -1, 0 oder 1 zurückgeben jenachdem welches Element oben stehen soll (wobei ichs auch immer wieder gern verwechsle ^^)
 
Zurück