关于排序扩展的一些误解

Mic*_*ael 0 .net c# ienumerable

我有以下代码示例:

    List<int> list = new List<int>();

    list.Add(1);
    list.Add(2);
    list.Add(3);
    list.Add(4);
    list.Add(5);
    list.Add(6);
    list.Add(7);

  list.OrderByDescending(n=>n).Reverse();
Run Code Online (Sandbox Code Playgroud)

但是当我使用它时:

list.OrderByDescending(n=>n).Reverse();
Run Code Online (Sandbox Code Playgroud)

我没有得到想要的结果.

如果不是上面的陈述,我使用这个:

list.Reverse();
Run Code Online (Sandbox Code Playgroud)

我得到了想要的结果.

知道为什么我没有得到想要的结果使用第一个声明?

我相信我在理解扩展时遗漏了一些东西.

先感谢您.

Han*_*ing 6

list.Reverse()方法就地反转列表,因此您的原始文件list已更改.

.OrderByDescending()扩展方法会产生一个新的列表(或相当的IEnumerable<T>),并留下您的原始list完整.

编辑
为两个排序顺序获取两个列表:

List<int> upList = list.OrderBy(n => n).ToList();
List<int> downList = list.OrderByDescending(n => n).ToList();
Run Code Online (Sandbox Code Playgroud)