C#列表。降序排列


150

我想收到一个 'Product.Name' 降序排列列表

类似于下面的功能,该功能以相反的顺序对列表进行升序排序,这可能吗?

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

问题可能是您写的toList不是ToList
Mark Byers 2010年

1
我认为他的意思是它不接受该descending关键字,因为他没有以from x in list...
StriplingWarrior

1
抱歉,我没有完全复制该代码,而是从内存中键入了代码。我的实际代码可以运行,但是只返回按升序排序的列表。
PFranchise

Answers:


260

当然:

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

Doc: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 2014年

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();

这对我来说可以显示时间以降序排列。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.