8
votes

LINQ Commande non linéaire par longueur de chaîne

J'essaie d'obtenir une liste de chaînes ordonnées de manière à ce que le plus long soit sur la fin de la liste et les plus courts sont au milieu. Par exemple: xxx

serait trié comme: xxx

edit: pour clarifier, je cherchais spécifiquement plus Pour une implémentation LINQ pour obtenir les résultats souhaités, car je ne savais pas comment / s'il était possible de faire à l'aide de LINQ.


0 commentaires

3 Réponses :


10
votes

Vous pouvez créer deux groupes ordonnés, puis commander le premier groupe descendant (déjà fait) et le deuxième groupe croissant: xxx

résultat: xxx


0 commentaires

7
votes

Ne demandez pas comment et pourquoi ... ^^

5 3 1 0 2 4


1 commentaires

Mais rien que vous souhaitez mettre en code de production. Ou peut-être seulement avec un lot de commentaires.



0
votes

Une autre option que je trouve plus lisible et facile à suivre: Vous avez une liste ordonnée: xxx

Créez une nouvelle liste et d'alterner simplement où vous ajoutez des éléments :: xxx

doux et simple :)

comme pour Daniel Bruckner Commentaire, si vous vous souciez de quelles chaînes viennent en premier, vous pouvez également modifier la condition de démarrage à: xxx


7 commentaires

Ce sera une sorte de désactivation par un pour les listes de longueur pair - la chaîne la plus longue sera dans la dernière position. Correction: var start = strings.count% 2 == 1;


Il a déclaré que les plus longs sont sur l'une ou l'autre extrémité de la liste , alors travaille toujours dans mon livre :). Je voulais éviter de calculer où mettre la corde et l'embrasser.


Point équitable. J'ai finalement abandonné comprendre comment je voudrais le mettre en œuvre dans le code de production.


Je n'étais pas très explicite dans ma question - je vous demandais spécifiquement comment le faire à l'aide de Linq. Mon intention n'était pas de mettre en œuvre une mise en œuvre, mais plutôt un exercice de pensée de «Comment cela utiliserait-on en utilisant X». Merci d'avoir posté cependant.


J'aimerais aussi dire que j'aurais probablement aller dans cette voie dans le code de production et éviter les solutions strictement linq que j'ai vues / proposées. Baiser en effet.


Eh bien ... si vous auriez dit Linq pour commencer, vous m'avez sauvé me sentir mal aimé pour offrir une bonne solution :). Retour au codage maintenant :)


@Noctis Hey, vous avez supprimé Votre question de méta avant de pouvoir m'excuser. Je suis ici pour dire que je suis désolé pour ma réponse émoussée. Vous pouvez aller de l'avant et poser votre question à nouveau, faites-vous juste attention à la manière dont cela se passe, les utilisateurs de Meta peuvent être assez sensibles autour de sujets controversés. Aussi, soyez conscient que Les votes sur Meta sont compliqués .