为什么降序排序不重新排列列表

本文关键字:排列 列表 新排列 降序 排序 为什么 | 更新日期: 2023-09-27 18:36:56

我是否正确理解降序实际上并没有重新排列列表的顺序? 如果是这样,解决这个问题的最佳方法是什么?

newList= myOldList.OrderByDescending(x => x.DateTime)
                            .ThenBy(x => x.Status)
                            .Where(x => x.Status != StatusEnum.Complete).ToList();

这似乎并没有真正重新排列它们,最有效的方法是什么?

谢谢。

为什么降序排序不重新排列列表

您需要更改调用 Linq 查询链的顺序,它应该是

newList= myOldList.Where(x => x.Status != StatusEnum.Complete).OrderByDescending(x => x.DateTime)
                        .ThenBy(x => x.Status)
                        .ToList();
您需要在

过滤结果后对它们进行排序,Where返回一个IEnumerable,而不是一个IOrderedEnumerable

但是您说得对,对集合使用 order 方法不会对集合本身进行排序。它确实返回集合的有序版本。

编辑:正如Tim Schmelter在评论中所说,Where不会改变顺序,但是如果您要对数据进行排序,则最好返回适当的接口。