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();
}
}
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();
Sans Linq:
Ascendant:
li.Sort();
Descendant:
li.Sort();
li.Reverse();
sans linq, utilisez Sort()
puis Reverse()
it.