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();
PFranchise
quelle
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();
StriplingWarrior
quelle
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
23

Ja. Verwenden Sie OrderByDescendinganstelle von OrderBy.

Mark Byers
quelle
11
list.OrderByDescending();

funktioniert bei mir.

Tablette
quelle
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.

Beedjees
quelle
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)
Basheer AL-MOMANI
quelle
-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.

Archana
quelle