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 :

parcours d'un Dictionary avec un for i


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Par défaut parcours d'un Dictionary avec un for i
    Bonjour,

    En VB .net 2005 est-il possible de parcourir une variable de type "Dictionary" (via une boucle for i .... ) sachant que les clés du Dictionary sont des string 'A' 'B' 'C' 'D' ....

    Le code suivant
    lève une exception.

    Le but est de créer un string CSV
    Mon code est le suivant:

    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
    Dim client As New Dictionary(Of String, List(Of client_structure))
    Dim ListClient As New List(Of client_structure)
    Dim csv As String 
     
    ' .....
     
    For i = 0 To (client.Count - 1)
        ListClient = client(i)
     
        ' ..... code qui boucle sur  ListClient 
     
        If (i < client.Count - 1) Then
            csv &= "\"
        End If
    Next i
    Remarque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each kvp As KeyValuePair(Of String, List(Of client_structure)) In client
    est une solution mais je ne peux pas déterminer si je parcours le dernier élément ... pour éviter de mettre le séparateur "\" dans le CSV

    Merci pour votre aide

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Utilise le For Each et ensuite tu supprimes le \ en trop à la fin de la chaine avec la méthode String.TrimEnd ou StringBuilder.Remove, suivant comment tu construis la chaîne.

    Sinon un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    string monTexte = string.Empty;
    if (monTexte.Length == 0)
    {
        monTexte += valeur;
    }
    else
    {
        monTexte += "\" + valeur;
    }
    t'assure de ne pas avoir de séparateur en trop. C'est du C#, mais le principe est là.

    La classe générique SortedList permet d'accéder aux clés/valeurs par l'index sinon.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu peux convertir le dictionnaire en tableau de KeyValuePair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim clientArray() = client.ToArray()
    For i = 0 To clientArray.Length - 1
        ...
    Next

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Faut vraiment que je regarde les méthodes apparues avec 3.5

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Par défaut
    Merci pour vos réponses .. .la solution que j'ai effectué:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            csv = ""
            i = 0
            For Each kvp As KeyValuePair(Of String, List(Of client_structure)) In client
     
                ' code ... 
     
                If (i < client.Count - 1) Then
                    csv &= "\"
                End If
                i += 1
            Next kvp
    Merci tomlev pour la proposition, je vais regarder ta solution, car elle semble simplifier la compréhention du code.

    Merci StormimOn pour tes posts.

    et merci "Philippe Lasserre" pour son cours

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Tu peux convertir le dictionnaire en tableau de KeyValuePair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim clientArray() = client.ToArray()
    For i = 0 To clientArray.Length - 1
        ...
    Next

    il y a pas de méthode ToArray sur des dictionary avec le framework 2 ?
    c'est une nouveau de la 3.5 ?

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par mastronic Voir le message
    il y a pas de méthode ToArray sur des dictionary avec le framework 2 ?
    c'est une nouveau de la 3.5 ?
    C'est une méthode d'extension (donc pas dispo en 2.0) qui s'applique à toutes les classes implémentant IEnumerable<T>

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

Discussions similaires

  1. Parcours d'une TObjectList avec for .. in
    Par Moez.B dans le forum Langage
    Réponses: 13
    Dernier message: 02/09/2014, 09h37
  2. [ActionScript] Problème avec boucle 'FOR'
    Par BnA dans le forum Flash
    Réponses: 7
    Dernier message: 02/11/2006, 09h26
  3. Lister les dossiers avec un for
    Par AnkyFive dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 25/09/2006, 10h14
  4. [SQL Server] parcourir une Table avec un FOR
    Par papouAlain dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/06/2006, 11h49
  5. faire plusieur declaration avec boucle for ?
    Par debutant-1 dans le forum C
    Réponses: 4
    Dernier message: 18/05/2006, 20h19

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