如何按索引降序排序C# List<book>集合?
按元素索引降序排序List集合的简洁实现
这里有两种简洁的实现方式,根据你的场景选择:
方法一:通用索引排序法(适用于任何初始顺序的集合)
如果你不确定原集合的元素是否严格按索引递增排列,或者需要明确基于原始索引排序,可以用LINQ结合索引捕获来实现:
var result = books .Select((book, index) => new { Book = book, Index = index }) .OrderByDescending(item => item.Index) .Select(item => item.Book) .ToList();
说明
- 第一个
Select方法会同时捕获每个元素及其对应的原始索引; OrderByDescending按索引值从大到小排序;- 最后一个
Select提取出排序后的book对象,转为List<book>。
方法二:反转集合法(适用于原集合按索引递增排列的场景)
如果你的原集合元素是按插入顺序(即索引从0到n-1依次排列),直接反转集合就能得到按索引降序的结果,代码更简洁:
var result = books.AsEnumerable().Reverse().ToList();
说明
Reverse()方法会将集合的元素顺序完全反转,对于初始索引递增的集合,反转后就等价于按索引从高到低排列,完全符合你的预期结果。
内容的提问来源于stack exchange,提问作者Carrie Kaski
相关产品推荐
相关产品推荐

