2009-02-11 7 views
0

J'ai une collection IEnumerable<T> avec le nom et FullName comme éléments. Il y a environ 5000 objets dedans.La commande d'articles par longueur dans IEnumerable <T>?

Je veux afficher les FullNames triés par leur longueur, donc d'abord le nom le plus long au nom le plus court s'affiche. Comment puis-je le faire de la manière la plus optimisée?

Répondre

2

Cette réponse est effectivement la même que celle de spoon16 mais sans utiliser d'expression de requête. Je n'utilise généralement pas une expression de requête pour des opérations simples (par exemple juste un ordre, ou seulement un filtre, ou juste une projection). Je me suis dit qu'il serait bon de voir les alternatives :)

var orderedList = nameList.OrderByDescending(x => x.FullName.Length); 
1

Il serait utile d'avoir plus d'informations sur exactement à quoi ressemblent vos structures de données. Mais je pense que cette requête LINQ devrait vous aider à démarrer.

var orderedItems = from name in nameList 
        order by name.FullName.Length descending 
        select name; 

Voici un ensemble complet de LINQ Order By examples.

+0

En fait, je reçois un « var nameList » de l'utilisateur qui prend en charge IEnumerable . Le nameList contient des données dans le format suivant: Name = "Jon" FullName = "Jon Terry" Name = "SiI" FullName = "Marchiu SiI" et ainsi de suite .. – Viks

+0

ok, donc la requête que j'ai donné vous ici devriez travailler. Si vous avez des problèmes avec cela, jetez un exemple de code dans votre question et nous pouvons y remédier. –

+0

Je pense que vous voulez ajouter "descendant" à la fin de la commande par clause ici, pour obtenir les noms les plus longs en premier. Aussi "order by" devrait être "orderby". –

Questions connexes