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 :

Retrouver un élément dans une List (of T) [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut Retrouver un élément dans une List (of T)
    Bonjour à tous,
    De retour pour la 5ème version de ma classe. Au moins j'ai appris plein de choses mais ma classe est toujours au point mort pour la raison suivante :
    Les listes suivantes ne sont pas serializable en XML (en Binary et SOAP, ca fonctionne) :
    - SortedList
    - SortedList (of Tkey , Tvalue)
    - Dictionnary (of TKey, TValue)
    - SortedDictionnary (of TKey, TValue)
    - hashtable.

    La seule liste que je peut serializer en XML est :
    - List (of T)

    Partant de ce constat j'ai mis ma sortedList en Private pour qu'elle ne soit plus traité par la serialization et j'ai ajouté une List (of T) qui fonctionne en parallèle. (Quand j'ajoute un objet dans List(of T) j'ajoute une clé à SortedList).
    List (of T) contient mes objets à serializer et SortedList me sert pour sa fonction de trie et pour accéder à un objet grâce à sa clé.

    Problème : je ne sais pas faire la correspondance entre les 2 listes. Que puis-je mettre comme valeur dans ma sortedList afin de pouvoir accéder à l'objet contenue dans ma Liste (of T) à partir de ma SortedList ?

    je sais pas si je suis clair ?! J'espère.

    Merci d'avance pour votre aide une nouvelle fois.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut
    Je laisse tomber la sérialisation XML, trop limité par rapport à SOAP.
    A moins qu'il existe une solution simple auquel cas je suis preneur.
    (Tant pis pour la lisibilité du fichier).

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Exemple avec un dictionnaire

    Tu crées une classe ayant la structure de tes éléments du dico

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Public Class DataItem
     
        Private mCle As String
        Public Property Cle() As String
            Get
                Return mCle
            End Get
            Set(ByVal value As String)
                mCle = value
            End Set
        End Property
     
        Private mValeur As String
        Public Property Valeur() As String
            Get
                Return mValeur
            End Get
            Set(ByVal value As String)
                mValeur = value
            End Set
        End Property
     
        Public Sub New()
        End Sub
     
        Public Sub New(ByVal Cle As String, ByVal Valeur As String)
            mCle = Cle
            mValeur = Valeur
        End Sub
    End Class
    Tu utilises une procédure qui passe les éléments de ton dico dans une liste (du type de la classe ayant la structure de tes éléments du dico) que tu sérialises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Private Sub SerialyseDico(ByVal unDictionnaire As Dictionary(Of String, String), ByVal Fichier As String)
            Dim lstDataItems As List(Of DataItem) = New List(Of DataItem)
     
            For Each Cle As String In unDictionnaire.Keys
                lstDataItems.Add(New DataItem(Cle, unDictionnaire(Cle).ToString()))
            Next
     
            ' sortie vers fichier
            Dim xs As New XmlSerializer(lstDataItems.GetType)
            Using sw As New StreamWriter(Fichier)
                xs.Serialize(sw, lstDataItems)
            End Using
     
        End Sub
    Utilisation dans un programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Dim LeDictionnaire As Dictionary(Of String, String) = New Dictionary(Of String, String)
     
        Private Sub frmSerialDict_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            For i As Integer = 0 To 5
                LeDictionnaire.Add("cle" & i, "valeur" & i)
            Next
        End Sub
     
        Private Sub btnSerialDict_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSerialDict.Click
            SerialyseDico(LeDictionnaire, "d:\dico.xml")
        End Sub
    A toi de voir comment utiliser dans ta classe

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut
    Merci beaucoup Hervé, je me suis inspirer de ton exemple. Ca fonctionne super.

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Par défaut
    Merci pour l'exemple, c'est exactement ce que j'avais besoin, a force de faire des copié coller, je vais plus rien apprendre moi !!

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    De rien,
    Après il faut l'adapter à ton besoin, et là tu peux creuser le principe.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

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

Discussions similaires

  1. position d'un élément dans une liste
    Par john491 dans le forum Général Python
    Réponses: 8
    Dernier message: 05/05/2006, 13h13
  2. [VBA] sélection d'un élément dans une liste
    Par menguygw dans le forum Access
    Réponses: 3
    Dernier message: 26/04/2006, 12h18
  3. Sélectionner un élément dans une liste multiple
    Par sourivore dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 28/03/2006, 11h47
  4. [debutant] insertion d'éléments dans une List
    Par gwenou60 dans le forum Composants
    Réponses: 1
    Dernier message: 05/12/2005, 09h59
  5. contrôler l'absence d'un élément dans une liste donnée
    Par gendalf37 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/09/2005, 10h02

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