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();
}
}
li.Sort((a, b) => b.CompareTo(a));
que l'-1*
approche utilisée ici. J'ai modifié la réponse en conséquence, mais @Servy l'a annulée.-a.CompareTo(b)
.Sans Linq:
Ascendant:
Descendant:
la source
Sort()
est une méthode void, vous ne pouvez donc pas y enchaîner lesReverse()
. Vous aurez besoin de 2 opérations distinctes. Cependant, avec LINQ, vous pouvez le chaîner à un,OrderBy
mais à ce stade, vous devez simplement l'utiliser à laOrderByDescending
place.sans linq, utilisez
Sort()
et ensuiteReverse()
.la source
Je vérifiais toutes les réponses ci-dessus et je voulais ajouter une information supplémentaire. Je voulais trier la liste dans l'ordre DESC et je cherchais la solution qui est plus rapide pour des entrées plus importantes et j'utilisais cette méthode plus tôt: -
mais mes cas de test échouaient pour avoir dépassé les délais, donc la solution ci-dessous a fonctionné pour moi: -
Donc, en fin de compte, la conclusion est que la 2ème façon de trier la liste par ordre décroissant est un peu plus rapide que la précédente.
la source
Moyen très simple de trier la liste avec des valeurs int dans l'ordre décroissant:
J'espère que cela aide!
la source
int.CompareTo(int)
qui porte une raison. Voir la source à referencesource.microsoft.com qui dit: " Besoin d'utiliser comparer car la soustraction se terminera en positif pour les très grands nombres négatifs, etc. ". Si vous avezb = int.MinValue
eta = 1
(dites), cela échouera. Parfois, un appel de méthode en vaut la peine.