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 :

Modifier l'objet dans un dictionnary.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 62
    Par défaut Modifier l'objet dans un dictionnary.
    Bonjour,

    Je travaille avec un dictionnary dans lequel j'ai une clé primaire et un objet classe.

    J'aimerais pouvoir modifier la valeur d'un champ de ma classe objet qui se trouve dans le dictionnary en fonction de sa clé primaire.

    Pour l'instant je fais comme celà :


    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
     
     
    Dictionary<string, Article> listArticle = new Dictionary<string, Article>();
     
    for (int Count = 2; iRowCount <= Count; Count++)
                        {
     
                            Article article = new Article();
                            article.Description = oExcel.ReadCell(Count,5);
                            article.FournisseurNb = oExcel.ReadCell(Count,1);
                            article.Prix = oExcel.ReadCell(Count,11);
                            article.RefAmps = oExcel.ReadCell(Count,7);
                            article.Quantity = 0;
     
                            listArticle.Add(article.RefAmps, article);
                        }
    foreach (string line in textLines)
                        {
                            Article modifyArticle;
                            listArticle.TryGetValue(line, out modifyArticle);
                            listArticle.Remove(line);
                            modifyArticle.Quantity += 1;
                            listArticle.Add(line, modifyArticle);
     
                        }
    Je suppose qu'il existe un moyen plus rapide que d'instancier une classe vierge, retrouver ma classe dans mon dictionnary, l'affecter à ma classe vierge, virer la classe de mon dictionnary. Modifier ma nouvelle classe pour ensuite la rajouter à mon dictionnary.

    Non ?

    Merci d'avance.

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     listArticle.TryGetValue(line, out modifyArticle);
     listArticle.Remove(line);
    modifyArticle.Quantity += 1;
    listArticle.Add(line, modifyArticle);
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     if (listArticle.TryGetValue(line, out modifyArticle)) modifyArticle.Quantity += 1;
     else ... // line non trouvé dans le dictionnary

  3. #3
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    tu verifies simplement si l'objet avec la cle donne existe ,tu le settes dico[string]=new objet

    code (2eme bouton l'item 5 en lui assignant l'objet avec les nouvelles valeurs de props ) :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace WinDictionarySet
    {
        public partial class Form1 : Form
        {
            Personne p;
            Dictionary<string, Personne> d = new Dictionary<string, Personne>();
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                Random rnd=new Random(); 
                for (int i = 1; i < 11; i++)
                {
     
                    p = new Personne()
                    {
                        Nom = "item" + i.ToString(),
                        Numero = i,
                        Salaire = 1000* (decimal)rnd.NextDouble()
     
                    };
                    d.Add(p.Nom,p);
                }
                listBox1.DataSource = d.ToList();
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                if (d.Values.Count != 0)
                {
                   Personne modifiedp = new Personne()
                    {
                        Nom = "item" + 5.ToString(),
                        Numero = 11,
                        Salaire = 12000.45M
     
                    };
                   if (d.ContainsKey(modifiedp.Nom)) d[modifiedp.Nom] = modifiedp;
     
                   listBox2.DataSource = d.ToList();
                }
            }
        }
        public class Personne
        {
            public string Nom { get; set; }
            public int Numero { get; set; }
            public decimal Salaire { get; set; }
            public override string ToString()
            {
                return Nom + " | " + Numero.ToString() + " | " + Salaire.ToString("0.00");
            }
        }
    }
    bon code...

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/05/2015, 12h17
  2. Modifier un objet dans un ArrayList
    Par SQUAL dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 26/07/2011, 14h36
  3. Modifier un objet dans list d 'objets
    Par topolino dans le forum ASP.NET
    Réponses: 3
    Dernier message: 31/08/2009, 12h27
  4. Réponses: 3
    Dernier message: 13/08/2008, 21h10
  5. [vb.net]modifier un objet dans un arrayList
    Par Golzinne dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/10/2006, 13h23

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