Linq - Sortierung nach Nummer und Buchstaben

8

Ich habe eine Liste von Strings, und diese Strings enthalten Zahlen und Wörter.

Was ich tun möchte, ist, sie nach den Zahlen (numerische Reihenfolge) zu sortieren, gefolgt von den Wörtern (alphabetische Reihenfolge)

Meine Liste enthält keine Mischung der beiden ... hier ist ein Beispiel

  

1, 5, 500, LT, RT, 400 - & gt; LINQ - & gt; 1,   5, 400, 500, LT, RT

Hier ist ein Beispiel von dem, was ich habe, es funktioniert, aber ich frage mich, ob es eine bessere Möglichkeit gibt, es zu schreiben?

%Vor%

Danke für die Hilfe!

    
ChickSentMeHighE 25.02.2011, 18:12
quelle

2 Antworten

17

Da Sie alles in-process machen (da Sie einen ToList-Aufruf haben), würde ich einen benutzerdefinierten Vergleicher verwenden:

%Vor%

Wo AlphaNumericComparer implementiert IComparer<string> , etwa so:

%Vor%

Sie könnten eine riesige Bedingung für den letzten Teil verwenden:

%Vor%

... aber in diesem Fall glaube ich nicht, dass ich:)

    
Jon Skeet 25.02.2011, 18:20
quelle
6

Diese Lösung versucht, für jeden Wert einmal zu analysieren.

%Vor%     
Amy B 25.02.2011 18:38
quelle

Tags und Links