C # list.Orderby malejąco


150

Chciałbym otrzymać listę posortowaną malejąco według „Product.Name” .

Podobnie jak w przypadku poniższej funkcji, która sortuje listę w porządku rosnącym, tylko w odwrotnej kolejności, czy jest to możliwe?

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

Czy problem może polegać na tym, że toListzamiast tego napisałeś ToList?
Mark Byers

1
Myślę, że miał na myśli, że nie akceptuje descendingsłowa kluczowego, ponieważ nie zaczynał wyrażeniafrom x in list...
StriplingWarrior

1
Przepraszam, nie skopiowałem dokładnie tego kodu, ale wpisałem go z pamięci. Mój rzeczywisty kod działa, ale po prostu zwraca listę posortowaną w kolejności rosnącej.
PFranchise

Odpowiedzi:


260

Pewnie:

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

Doc: OrderByDescending (IEnumerable, Func) .

W odpowiedzi na Twój komentarz:

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

2
Więc twoja edycja zostanie posortowana według nazwy (od z-> a), a następnie ceny (niska -> wysoka)?
PFranchise

11
Tak to jest poprawne. Wywołania do OrderBy lub ThenBy są zawsze rosnące. Metody OrderByDescending i ThenByDescending są tym, czego używasz do malejącej.
StriplingWarrior


11
list.OrderByDescending();

pracuje dla mnie.


4
To nic nie dało bez wykonania list = list.OrderByDescending (). ToList ();
Almo

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

To powinno wystarczyć.


1

spójrz na ten fragment kodu z mojego projektu

Próbuję zmienić kolejność listy na podstawie właściwości w moim modelu,

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

ale napotkałem problem, gdy a small and capital letters exist, więc aby go rozwiązać, użyłem funkcji porównującej ciąg.

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

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

Co działa w moim przypadku, aby pokazać czas posortowany w porządku malejącym.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.