Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Trie multiple dans une liste


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Ao�t 2017
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Technicien maintenance

    Informations forums :
    Inscription : Ao�t 2017
    Messages : 21
    Par d�faut Trie multiple dans une liste
    Bonjour � tous,
    je voulais savoir s'il y avait une solution simple et rapide pour faire 2 tries avec un seul param�tre. Je m'explique :
    Ma liste se compose de chiffre en hexad�cimal et aujourd'hui, je trie ma liste avec un simple ListeID.sort(); ce qui me donne :
    18FF0081
    18FF0082
    18FF0181
    18FF0182
    ....

    Hors, ce que j'aimerais, c'est que ma liste soit tri�e de cette mani�re :
    18FF0081
    18FF0181
    18FF0082
    18FF0182
    ....

    Donc l'id�e que j'avais �tait de faire un premier trie sur les 2 derniers chiffres (81 et 82) puis ensuite de faire un deuxi�me trie sur le 3�me chiffre (0, 1, 2...).

    En cherchant un peu, voici ce que j'ai trouv� :
    [S]Liste_ID.OrderBy((Id & 0x000000FF).ThenBy(Id >> 8));[S]
    Malheureusement, j'ai une erreur qui m�emp�che de compiler. Avez-vous une piste ?

    Merci par avance.

    Cordialement.

  2. #2
    Membre Expert
    Homme Profil pro
    D�veloppeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activit� : D�veloppeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par d�faut
    Bonjour,

    La piste c'est toi qui la donne. Il fallait pousser de ce c�t� l� et comprendre pourquoi �a ne compile pas.
    Si tu stockes les nombres sous forme de String :
    En convertissant en uint :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    List<String> Result = ListId.OrderBy(Id => (Convert.ToUInt32(Id,16) & 0x000000FF)).ThenBy(Id => Convert.ToUInt32(Id,16) >> 8).ToList();
    En utilisant les fonctions sur chaines de caract�res (pas terrible je trouve) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    List<String> Result = ListId.OrderBy(Id => Id.Substring(6,2)).ThenBy(Id => Id.Substring(5,1)).ToList();
    Enfin en plus efficace , stocker les nombres en uint :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    List<UInt32> ListIdNum = new List<uint> {0x18FF0182, 0x18FF0081, 0x18FF0181, 0x18FF0082};
    List<uint> ResultInt = ListIdNum.OrderBy(Id => Id & 0x000000FF).ThenBy(Id => Id >> 8).ToList();

Discussions similaires

  1. Insertion tri�e efficace dans une List<T>
    Par olibara dans le forum C#
    R�ponses: 4
    Dernier message: 11/10/2009, 23h43
  2. R�ponses: 3
    Dernier message: 13/08/2009, 10h55
  3. choix multiples dans une liste d�roulante
    Par luffy2mars dans le forum Servlets/JSP
    R�ponses: 5
    Dernier message: 14/01/2009, 16h34
  4. D�coupage de chaine et s�lection multiple dans une liste
    Par Ben-o dans le forum ActionScript 1 & ActionScript 2
    R�ponses: 3
    Dernier message: 05/12/2008, 10h56
  5. [Forms 9i] S�lection multiple dans une liste
    Par Magnus dans le forum Forms
    R�ponses: 13
    Dernier message: 17/01/2007, 12h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo