Essayez ceci:
sets.Sort((setA, setB) => setB.Count.CompareTo(setA.Count));
Il utilise la surcharge Sort(Comparison<T> comparison)
de List<T>.Sort
. Le fait que l'expression compare B à A plutôt qu'à A avec B est ce qui produit l'ordre décroissant par comptage dont vous avez besoin.
La raison pour laquelle votre code ne fonctionne pas est parce que List<T>.Sort
, à la différence Enumerable.OrderByDescending
, n'a pas une surcharge qui accepte un Func<TSource, TKey>
-sélecteur à clé.
La technique de @Darin Dimitrov d'utiliser OrderByDescending
est très bien aussi, mais notez que cela va créer une liste triée hors de propos et réaffecter la référence que vous avez à la liste d'origine à la nouvelle, triée.
Cela va trier dans l'ordre croissant. L'OP veut le plus grand ensemble en premier. Vous avez besoin de 'OrderByDescending'. – Ani
@Ani, correct. J'ai mis à jour mon message pour refléter cela. Merci de l'avoir signalé. –
Les deux solutions ont l'air bien ... Je vais attendre pour voir qui obtient plus de voix avant de choisir: P Merci! J'aime comme c'est facile à lire. – mpen