如何对通用列表 DESC 和 ASC 进行排序?

我如何排序通用列表 DESC 和 ASC? 与 LINQ 和没有 LINQ? 我使用 VS2008。

class Program
{
static void Main(string[] args)
{
List<int> li = new List<int>();


li.Add(456);
li.Add(123);
li.Add(12345667);
li.Add(0);
li.Add(1);


li.Sort();


foreach (int item in li)
{
Console.WriteLine(item.ToString() + "\n");
}


Console.ReadKey();
}
}
274807 次浏览

和 Linq 一起

var ascendingOrder = li.OrderBy(i => i);
var descendingOrder = li.OrderByDescending(i => i);

没有 Linq

li.Sort((a, b) => a.CompareTo(b)); // ascending sort
li.Sort((a, b) => b.CompareTo(a)); // descending sort

注意,如果没有 Linq,列表本身正在排序。使用 Linq,您可以获得列表的有序枚举,但是列表本身没有改变。如果希望对列表进行变异,可以将 Linq 方法更改为

li = li.OrderBy(i => i).ToList();

没有 Linq, 使用 Sort(),然后 Reverse()它。

没有林克:

上升:

li.Sort();

下降:

li.Sort();
li.Reverse();

用 int 值按降序对 List 进行排序的非常简单的方法:

li.Sort((a,b)=> b-a);

希望这能帮上忙!

我正在检查以上所有的答案,并希望添加一个额外的信息。 我想按照 DESC 顺序对列表进行排序,我正在寻找对于更大的输入来说更快的解决方案,我之前使用了这个方法:-

li.Sort();
li.Reverse();

但是我的测试用例因为超过时间限制而失败了,所以下面的解决方案对我很有效:-

li.Sort((a, b) => b.CompareTo(a));

所以最终的结论是,第二种排序方法按降序排序比前一种排序方法要快一些。