How can I sort generic list DESC and ASC?

前端 未结 5 2097
盖世英雄少女心
盖世英雄少女心 2020-12-04 14:07

How can I sort generic list DESC and ASC? With LINQ and without LINQ? I\'m using VS2008.

class Program
{
    static void Main(string[] args)
    {
        Li         


        
相关标签:
5条回答
  • 2020-12-04 14:17

    Without Linq:

    Ascending:

    li.Sort();
    

    Descending:

    li.Sort();
    li.Reverse();
    
    0 讨论(0)
  • 2020-12-04 14:18

    I was checking all the answer above and wanted to add one more additional information. I wanted to sort the list in DESC order and I was searching for the solution which is faster for bigger inputs and I was using this method earlier :-

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

    but my test cases were failing for exceeding time limits, so below solution worked for me:-

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

    So Ultimately the conclusion is that 2nd way of Sorting list in Descending order is bit faster than the previous one.

    0 讨论(0)
  • 2020-12-04 14:20

    Very simple way to sort List with int values in Descending order:

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

    Hope that this helps!

    0 讨论(0)
  • 2020-12-04 14:33

    With Linq

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

    Without Linq

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

    Note that without Linq, the list itself is being sorted. With Linq, you're getting an ordered enumerable of the list but the list itself hasn't changed. If you want to mutate the list, you would change the Linq methods to something like

    li = li.OrderBy(i => i).ToList();
    
    0 讨论(0)
  • 2020-12-04 14:40

    without linq, use Sort() and then Reverse() it.

    0 讨论(0)
提交回复
热议问题