web-dev-qa-db-fra.com

Comment puis-je trier les listes génériques DESC et ASC?

Comment puis-je trier les listes génériques 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();
    }
}
91
Penguen

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) => -1* a.CompareTo(b)); // 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 souhaitez modifier la liste, modifiez les méthodes Linq en quelque chose comme

li = li.OrderBy(i => i).ToList();
199
Anthony Pegram

Sans Linq:

Ascendant:

li.Sort();

Descendant:

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

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