Wie kann ich generische Listen DESC und ASC sortieren? Mit LINQ und ohne LINQ? Ich benutze VS2008.
class Program
{
static void Main(string[] args)
{
List<int> li = new List<int>();
li.Add(456);
li.Add(123);
li.Add(12345667);
li.Add(0);
li.Add(1);
li.Sort();
foreach (int item in li)
{
Console.WriteLine(item.ToString() + "\n");
}
Console.ReadKey();
}
}
li.Sort((a, b) => b.CompareTo(a));
als der-1*
hier verwendete Ansatz. Ich habe die Antwort entsprechend bearbeitet, aber @Servy hat sie zurückgesetzt.-a.CompareTo(b)
.Ohne Linq:
Aufsteigend:
Absteigend:
quelle
Sort()
ist eine void-Methode, daher können Sie sie nichtReverse()
auf diese Weise verketten. Sie benötigen 2 separate Operationen. Mit LINQ können Sie es jedoch an ein verketten,OrderBy
aber an diesem Punkt sollten SieOrderByDescending
stattdessen einfach verwenden .ohne linq verwenden
Sort()
und dannReverse()
es.quelle
Ich habe alle obigen Antworten überprüft und wollte noch eine weitere Information hinzufügen. Ich wollte die Liste in DESC-Reihenfolge sortieren und suchte nach einer Lösung, die für größere Eingaben schneller ist, und habe diese Methode früher verwendet: -
Da meine Testfälle jedoch die Zeitlimits nicht überschritten haben, hat die folgende Lösung für mich funktioniert: -
Letztendlich ist die Schlussfolgerung, dass die zweite Art der Sortierung der Liste in absteigender Reihenfolge etwas schneller ist als die vorherige.
quelle
Sehr einfache Methode zum Sortieren von Listen mit int-Werten in absteigender Reihenfolge:
Hoffe das hilft!
quelle
int.CompareTo(int)
Grund für eine Tür. Siehe die Quelle unter referencesource.microsoft.com, in der steht: " Vergleichen muss verwendet werden, da die Subtraktion für sehr große negative Zahlen usw. positiv wird. " Wenn Sieb = int.MinValue
unda = 1
(sagen wir) haben, wird dies fehlschlagen. Manchmal lohnt sich ein Methodenaufruf.