IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

VB.NET Discussion :

Trier une variable de type List(Of T)


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut Trier une variable de type List(Of T)
    Bonjour à tous,

    Je commence par planté brièvement le décor...

    Dans mon application, j'ai besoin d'un objet représentant un document.
    J'ai donc créé une classe nommée Doc qui une propriété (parmi d'autres) nommée CreationDate.

    Quelque part dans mon application, je récupère tout une série de ces documents et je les place dans la variable "doc" qui est de type List(Of T)

    Ma question est la suivante : Comment trier cette liste de document en fonction de la date de création qui se trouve dans la propriété CreationDate.

    J'ai bien vu qu'on pouvait mettre en paramètre un objet de type IComparer(Of T) mais j'avoue ne rien avoir compris quand à l'aide fournie pour cette méthode.

    J'en appelle donc à la sagesse collective.

    Merci d'avance,

    Griftou.
    Kropernic

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    327
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 327
    Points : 402
    Points
    402
    Par défaut
    Bonjour,
    Tout d'abord, ta classe doit implémenter l'interface IComparable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class Doc
    Implements Icomparable(Of Doc)
        prop DateCreation
        prop ...
    #Region "Icomparable Members"
        Protected Function CompareTo(ByVal other as Doc) As Integer _
          Implements IComparable(Of Doc).CompareTo
            If TypeOf other Is Doc Then
                Dim temp As Doc = CType(other,Doc)
                Return Me.DateCreation.CompareTo(temp.DateCreation)
            End If
     
            Throw New ArgumentException("L'objet n'est pas un Document")
        Ebd Function
    #End Region
     
    End Class
    Voilà pour la Classe Doc.

    Maintenant pour l'utilisation,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim maListTriee as List(Of Doc) = maListDeDoc.Sort()
    En espérant avoir pu t'aider.
    Bon courage
    A bientôt

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    A priori, ça a l'air cohérent.

    Je teste tout ça et je coche résolu si c'est concluant.

    Merci beaucoup !
    Kropernic

  4. #4
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Ou avec une méthode anonyme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    List<Document> list = new List<Document>();
    list.Add(new Document { CreateDate = DateTime.Now.AddDays(1) });
    list.Add(new Document { CreateDate = DateTime.Now });
     
    list.Sort(delegate(Document doc1, Document doc2)
    {
        return p1.CreateDate.CompareTo(p2.CreateDate);
     
    });

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par wakan Voir le message
    Bonjour,
    Tout d'abord, ta classe doit implémenter l'interface IComparable
    Totalement inutile si sa propriété CréationDate est publique.
    Il peut simplement utiliser une méthode d'extension Linq , en l'occurrence OrderBy.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    List<MyDocument> myList = new List<MyDocument>();
     
    // code qui remplit la liste ici
    // .....
     
    myList.OrderBy(doc => doc.CreationDate);
    je vous laisse traduire cela en VerBeux

    EDIT : en VerBeux ça donne cela semble-t-il :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myList.OrderBy(Function(ByVal doc ) doc .CreationDate)

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  6. #6
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Ma faute, j'ai oublié de préciser que je suis toujours sous VS2005
    Kropernic

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par griftou Voir le message
    Ma faute, j'ai oublié de préciser que je suis toujours sous VS2005
    Ah, là c'est plus casse pîed; dans ce cas, la réponse du collègue est donc la bonne. (implémenter IComparer).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  8. #8
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Quoi qu'il en soit, merci !
    Kropernic

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Donc, merci de penser au bouton

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  10. #10
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Comme dit dans un précédent message, je comptais attendre d'avoir pu tester cela.

    Je n'en suis encore qu'au début du développement (création des objets et de la couche d'accès aux données).

    Mais bon, vu que vous avez l'air d'être sûr de la réponse, je vais vous faire confiance et set le topic sur résolu.
    Kropernic

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/05/2014, 12h24
  2. [WD16] Lire un élément d'une variable de type Liste
    Par OnePoint dans le forum WinDev
    Réponses: 4
    Dernier message: 11/02/2013, 15h38
  3. Réponses: 4
    Dernier message: 22/01/2013, 11h01
  4. Tmap - initialiser une variable de type List
    Par jeanphi45 dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 23/03/2012, 21h12
  5. trier une variable de Type Array a deux dimension
    Par boboss123 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/03/2010, 17h12

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