Ich versuche, eine Liste von Zeichenfolgen in einer Reihenfolge zu sortieren, die zu einer Sequenz in allgemeinen Revisionsverlauf Sequenzen relevant ist. Manche Kunden beginnen mit "-" oder "Neu" oder einigen anderen spezifischen Codes, und ich kann LINQ verwenden, um eine benutzerdefinierte Sortierreihenfolge zu definieren. Nachdem jedoch eine Zeichnung von Rev A bis Rev Z überarbeitet wurde, wird sie Rev AA bis Rev AZ, Rev BA bis BZ und so weiter. Wie kann ich die folgende Liste mit LINQ sortieren?Sortierung Liste der Zeichenfolgen mit Linq mit benutzerdefinierten Sortierung
Ich habe dies als Beispiel Codeblock:
List<string> revList = new List<string> { "A", "NC", "New", "AB", "PD", "PD1",
"PD2", "B", "-", "*", "BB", "NA" };
revList = revList.OrderByDescending(i => i.ToLower() == "pd").
ThenByDescending(i => i.ToLower() == "nc").
ThenByDescending(i => i.ToLower() == "na").
ThenByDescending(i => i.ToLower() == "new").
ThenByDescending(i => i.ToLower() == "pd1").
ThenByDescending(i => i.ToLower() == "pd2").
ThenByDescending(i => i.ToLower() == "-").
ThenByDescending(i => i.ToLower() == "*").
ThenBy(i => i).ToList();
foreach (string rev in revList)
Console.WriteLine(rev);
Dies erzeugt eine Ausgabe wie:
PD
NC
NA
NEW
PD1
PD2
-
*
A
AB
B
B
würde ich produzieren mag:
PD
NC
NA
NEW
PD1
PD2
-
*
A
B
AB
BB
Zuerst nach 'Länge' sortieren, z. Setze 'ThenBy (i => i.Length) .' vor' ThenBy (i => i) ' –
Ivan, du gewinnst. Ich wünschte, ich könnte für Ihre Antwort stimmen, seit es das erste Mal war, aber es war ein Kommentar. Danke. – AuLion
Warum kam 'PD' vor 'NC' ist das gewünschte Ergebnis? –