In C# Namen alphabetisch ordnen?

3 Antworten

Konstruiere eine Datenstruktur die intern eine Hashmap, welche Chars auf eine List abbildet, benutzt.
Anschließend kannst du methoden zum hinzufügen von namen angeben, wo als parameter der name angegeben wird
und brauchst nur den 1. Buchstaben des namen nehmen als parameter an die hashmap übergeben und dann an die list hinzufügen.

Dann überschreibst du .ToString um die gewünschte darstellung zu erhalten

Implememtierungshinweis: Ne Hashmap heisst in C# Dictionary und ist generisch.

1

Kopiere die Namen in eine Liste, füge die Buchstaben A-Z hinzu und nutze dann die Order-By-Methode, die Linq zur Verfügung stellt.

https://msdn.microsoft.com/de-de/library/bb534966(v=vs.110).aspx

Wenn du dies öfter machen musst, solltest du die Namen hingegen in einer Dictionary (<char, IList>) speichern, mit dem Buchstaben als Key. Dann könntest du von A-Z iterieren und so die Ausgabe gestalten.

Ein Dictionary ist nicht notwendig. Linq stellt neben OrderBy auch GroupBy zur Verfügung.

Hab mal auf die Schnelle was zusammengehackt:

https://pastebin.com/bMJyukzN

2
@regex9

Hat aber ggf. den Nachteil, dass nur die tatsächlich vorhandenen Anfangsbuchstaben aufgelistet werden. Falls die Aufgabe fordert, das ganze Alphabet aufzulisten, egal, ob ein Buchstabe als Anfangsbuchstabe auftritt oder nicht, wird die Aufgabe damit nicht gelöst.

(Für Anfänger sind Rückgriffe auf Linq m. E. nicht zu empfehlen, dabei lernt man nichts über die Hintergründe der Sortierverfahren.)

0


        for (char letter = 'A'; letter <= 'Z'; letter++) 
{
Console.WriteLine(letter); //Schreibt alle Buchstaben von A bis Z


foreach (var studentName in _student)
{
if (studentName.Nachname.ToUpper().StartsWith(letter.ToString()))
{
Console.WriteLIne(studentName.Nachname + " " + studentName.Vorname);
}
}
}
Console.ReadKey();



Sorry für die schlechte Formatierung, ist ein Graus hier auf GF..

Ohne deine genaue Struktur zu kennen sollte es so wie oben beschrieben funktionen. Hier wird nur auf den Anfangsbuchstaben des Nachnamen geprüft

0

Was möchtest Du wissen?