C # список. Замовлення за спаданням


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 або OndaBy завжди зростають. Методи OrderByDescending та затемByDescending - це те, що ви використовуєте для зменшення.
StriplingWarrior


11
list.OrderByDescending();

працює для мене.


4
Це не зробило нічого, не роблячи list = list.OrderByDescending (). ToList ();
Альмо

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

Це має зробити роботу.


1

подивіться це шматок коду з мого проекту

Я намагаюся повторно замовити список на основі властивості всередині моєї моделі,

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

але я зіткнувся з проблемою, коли a 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.