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

C# Discussion :

Dictionary.Add() sur une dimension spécifique.


Sujet :

C#

  1. #1
    darkloy
    Invité(e)
    Par défaut Dictionary.Add() sur une dimension spécifique.
    Bonjour à tous,

    Bon attention, c'est tiré par les cheveux mais cela m'aiderais beaucoup bien que je pense qu'il n'y ai pas de solutions...

    Je suis dans une boucle qui corresponds à la lecture des données d'un Json.

    J'arrive dans mon unique boucle à afficher ceci (l'exemple est bidon, c'est pour vous donner une idée):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /details
       name : company
       size : 23
    /details/worker
    /details/worker/jose
               age : 45
               adress : xxxx
    /details/worker/franck
               age : 33
               adress : xxx
    Pour mon algo, je ne peux pas utiliser de fonction récursive (l'api qui traite mon Json bugue...).

    Le but est d'exporter un Dictionary sur le format si dessus, tout en étant dynamique vis à vis de la structure et des dimensions aléatoires.
    Mais comment faire?

    J'ai eu comme idée d'hériter une classe de Dictionnary

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class MultiDictionary<TKey, TValue> : Dictionary<TKey, TValue>{
     
    }
    et de surcharger la méthode Add().
    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void Add(Hashtable path, TKey argument, TValue val)
    Il faudrait que si je lui passe en paramètre mon Hashtable qui correspond au chemin dans les dimensions il m'ajoute la valeur à l'argument de cette dimension.

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MultiDictionary<string, object> out = new MultiDictionary<string, object>();
    Hashtable path; // path = ("details","worker","franck")
    out.Add(path, "profession", "Developer");
    Cela fait deux jours que je planche pour une solution propre et dynamique, mais je n'en vois aucune. Avez vous idée svp ? Cela m'aiderais énormément...

  2. #2
    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
    Peut être que pour ce type de stockage, Dictionnary n'est pas l'idéal.

    Voir du coté de LinkedList<T>, voir un couple LinkedList + Dictionnary qui serait peut être préférable.

    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

  3. #3
    darkloy
    Invité(e)
    Par défaut
    Merci pour cette piste, après un rapide coup d'oeil, ça pourrais le faire

    Je vous tiens au courant et merci à toi !

  4. #4
    darkloy
    Invité(e)
    Par défaut
    Désolé mais les LinkedList j'ai des lacunes.

    J'ai compris que l'on pointe plus à partir d'index.

    Est-ce que je peux ajouter dans une LinkedList une valeur dans une "dimension" spécifiée comme je fairais avec un Dictionnary ou une Hashtable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $list["dim1"]["dim2"]["dim3"].Add(ma valeur);
    En fait c'est las syntaxe qui me bloque avec les Dictionnary. Les linkedlists peuvent me sembler plus appropriées mais je ne trouve pas la bonne méthode.
    Ensuite est-ce que je peux boucler dessus comme je bouclerais sur un Dictionnary ?
    Dernière modification par Deepin ; 26/01/2012 à 10h18. Motif: Balises [CODE]...[/CODE]

  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
    La notion de "dimension" n'existe pas dans les classes de type Dictionnary, List, etc ....

    J'ai un peu de mal à cerner ton besoin fonctionnel. Tel que tu décrivais les choses dans ton premier post, on avait plutôt l'impression que ton besoin était un stockage de type "arborescence".

    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

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/05/2008, 11h59
  2. Restriction d'accès sur une URL Spécifique
    Par elspliffo dans le forum Apache
    Réponses: 1
    Dernier message: 16/10/2007, 10h57
  3. Ouvrir Regedit sur une clé spécifique
    Par rpoulin dans le forum Langage
    Réponses: 24
    Dernier message: 13/10/2007, 22h18
  4. Un lien qui ouvre sur une page spécifique d'un fichier
    Par chpog dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/08/2005, 14h56
  5. Focus sur une cellule spécifique d'un DBGrid
    Par danbern dans le forum Bases de données
    Réponses: 4
    Dernier message: 25/11/2004, 19h04

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