为什么orderbydescending没有重新排列列表?

时间:2016-03-01 12:09:36

标签: c# linq generics

我是否正确理解orderbydescending实际上并不重新排列列表的顺序?如果是这样,围绕这个最好的方法是什么?

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

这似乎并没有实际重新安排它们,最有效的方法是什么?

谢谢。

2 个答案:

答案 0 :(得分:1)

您需要在过滤结果后对其进行排序,Where会返回IEnumerable,而不是IOrderedEnumerable

但是你说在集合上使用订单方法并不对订单本身进行排序是正确的。它 返回该集合的有序版本。

编辑:正如Tim Schmelter在评论中所说,Where并未改变订单,但如果您要对数据进行排序,则最好返回相应的界面

答案 1 :(得分:1)

您需要更改调用Linq查询链的顺序

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