C # list.Orderby absteigend


150

Ich möchte eine Liste erhalten, die nach 'Product.Name' in absteigender Reihenfolge sortiert ist .

Ist dies ähnlich wie bei der folgenden Funktion möglich, bei der die Liste in aufsteigender Reihenfolge sortiert wird?

var newList = list.OrderBy(x => x.Product.Name).ToList();

Könnte das Problem sein, dass Sie toListstatt geschrieben haben ToList?
Mark Byers

1
Ich denke, er meinte, dass es das descendingSchlüsselwort nicht akzeptiert , weil er seinen Ausdruck nicht mitfrom x in list...
StriplingWarrior

1
Entschuldigung, ich habe diesen Code nicht genau kopiert, sondern aus dem Speicher eingegeben. Mein eigentlicher Code funktioniert, gibt aber nur eine Liste zurück, die in aufsteigender Reihenfolge sortiert ist.
Franchise

Antworten:


260

Sicher:

var newList = list.OrderByDescending(x => x.Product.Name).ToList();

Doc: OrderByDescending (IEnumerable, Func) .

Als Antwort auf Ihren Kommentar:

var newList = list.OrderByDescending(x => x.Product.Name)
                  .ThenBy(x => x.Product.Price)
                  .ToList();

2
Ihre Bearbeitung wird also nach Namen (von z-> a) und dann nach Preis (niedrig -> hoch) sortiert?
Franchise

11
Ja, das ist richtig. Anrufe bei OrderBy oder ThenBy steigen immer auf. Die Methoden OrderByDescending und ThenByDescending werden für den Abstieg verwendet.
StriplingWarrior


11
list.OrderByDescending();

funktioniert bei mir.


4
Dies hat nichts getan, ohne list = list.OrderByDescending (). ToList ();
Almo

8
var newList = list.OrderBy(x => x.Product.Name).Reverse()

Dies sollte den Job machen.


1

schau es dir diesen Code aus meinem Projekt an

Ich versuche, die Liste basierend auf einer Eigenschaft in meinem Modell neu zu ordnen.

 allEmployees = new List<Employee>(allEmployees.OrderByDescending(employee => employee.Name));

Aber ich hatte ein Problem, als ich small and capital letters exist, um es zu lösen, den String-Vergleicher verwendete.

allEmployees.OrderBy(employee => employee.Name,StringComparer.CurrentCultureIgnoreCase)

-2
list = new List<ProcedureTime>(); sortedList = list.OrderByDescending(ProcedureTime=> ProcedureTime.EndTime).ToList();

Was für mich funktioniert, um die Zeit in absteigender Reihenfolge sortiert anzuzeigen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.