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

150

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

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

var newList = list.OrderBy(x => x.Product.Name).ToList();
PFranchise
источник
Может быть проблема в том, что вы написали 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();
StriplingWarrior
источник
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()

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

Beedjees
источник
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();

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

Archana
источник