C # list.Orderby по убыванию


150

Я хотел бы получить список, отсортированный по «Product.Name» в порядке убывания .

Подобно функции ниже, которая сортирует список по возрастанию, только в обратном порядке, возможно ли это?

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

Может быть проблема в том, что вы написали toListвместо ToList?
Марк Байерс

1
Я думаю, он имел в виду, что он не принимает descendingключевое слово, потому что он не начал свое выражение сfrom x in list...
StriplingWarrior

1
Извините, я не копировал этот код точно, а набрал его из памяти. Мой реальный код работает, но просто возвращает список, отсортированный в порядке возрастания.
PFranchise

Ответы:


260

Конечно:

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

Документ : OrderByDescending (IEnumerable, Func) .

В ответ на ваш комментарий:

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

2
Таким образом, ваша правка будет отсортирована по имени (из z-> a), а затем по цене (низкая -> высокая)?
PFranchise

11
Да, это правильно. Звонки в OrderBy или ThenBy всегда возрастают. Методы OrderByDescending и ThenByDescending используются для спуска.
StriplingWarrior


11
list.OrderByDescending();

работает для меня.


4
Это ничего не сделало, не делая list = list.OrderByDescending (). ToList ();
Almo

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

Это должно сделать работу.


1

посмотри этот кусок кода из моего проекта

Я пытаюсь изменить порядок списка на основе свойства внутри моей модели,

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

но я столкнулся с проблемой, когда small and capital letters exist, поэтому, чтобы решить ее, я использовал строку сравнения.

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

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

Который работает для меня, чтобы показать время, отсортированное в порядке убывания.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.