148 votes

Comment trier la liste générique DESC et ASC ?

Comment trier la liste générique DESC et ASC ? Avec LINQ et sans LINQ ? J'utilise 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();
    }
}

325voto

Anthony Pegram Points 58528

Avec Linq

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

Sans Linq

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

Notez que sans Linq, la liste elle-même est en cours de tri. Avec Linq, vous obtenez un énumérable ordonné de la liste, mais la liste elle-même n'a pas changé. Si vous voulez faire muter la liste, vous changeriez les méthodes Linq en quelque chose comme

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

93voto

Sani Huttunen Points 10433

Sans Linq :

Ascendant :

li.Sort();

Descendant :

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

21voto

sans linq, utilisez Sort() puis Reverse().

-3voto

Sunil Murali Points 3

Façon très simple de trier la liste avec les valeurs int dans l'ordre décroissant :

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

J'espère que cela aidera !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X