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 :

L'operateur '+' et les listes


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 23
    Par défaut L'operateur '+' et les listes
    Bonjour.
    J'ai besoin d'utiliser des listes dans mon projet, afin de les affecter comme DataSource à des GridView que je vais utiliser! le problème est que, à un certain moment j'ai besoin de faire la somme de deux listes, mais au moment de la compilation j'ai le message d'erreur suivant:

    CS0019: Operator '+' cannot be applied to operands of type 'System.Collections.IList' and 'System.Collections.IList'.
    Quelqu'un peut m'aider?!
    Merci

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Une somme de deux listes?
    Cela n'existe pas! On appelle ca une union!
    http://msdn.microsoft.com/en-us/library/bb341731.aspx

  3. #3
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 23
    Par défaut Ajout des balises de code [CODE]...[/CODE]
    D'accord, je m'en doutais! Voila un exemple de ce que je voudrais faire, pour que cela soit plus clair:

    J'ai une classe qui s'appelle calcul;;

    sur le fichier 'cs' de ma page asp, j'écris :

    Code C# : 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
    //Bouton qui déclenche le code
    protected void Execut_Click(object sender, EventArgs e)
    {
        //Binding First Dataview
        IList liste = new ArrayList();
        int t = int.Parse(TextBox1.Text);
        int m = int.Parse(TextBox2.Text);
     
        while (m > 0) 
        {
            Calcul objet1 = new Calcul();
            objet1.Montant = m;
            objet1.Taux = t;
            liste.Add(objet1);            
            m = m - t;   
        }
        GridViewR1.DataSource = liste;
        GridViewR1.DataBind();
     
        //Binding Second Dataview
        IList liste2 = new ArrayList();
        int t2 = int.Parse(TextBox2.Text);
        int m2 = int.Parse(TextBox2.Text);
        while (m2 > 0)
        {
            Calcul objet2 = new Calcul();
            objet2.Montant = m2;
            objet2.Taux = t2;
            liste2.Add(objet2);
            m2 = m2 - t2;
        }
        GridViewR2.DataSource = liste2;
        GridViewR2.DataBind();
    Comment faire maintenant une liste qui soit la concaténation des deux autres ?

  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
    Déjà oublie ArrayList si tu es sur le framework 2.0 au minimum. Passe aux collections génériques (List<T>, ...).

    Et pour combiner des listes il existe la méthode AddRange, que l'on retrouve sur beaucoup de collections, et qui te permettra de faire ce que tu veux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    List<int> liste1;
    List<int> liste2;
    ...
    List<int> liste3 = new List<int>(liste1.Count + liste2.Count);
    liste3.AddRange(liste1);
    liste3.AddRange(liste2);

  5. #5
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 23
    Par défaut
    bonjour,

    J'ai trouvé la solution.puisque j'alimente mais listes par des objet de type "MaClasse" , je fais une boucle qui s'exécute au tant que le nombre des lignes de ma liste et je caste ma liste puis je choisis l'attribut que je veux additionner!un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    IList liste3 = new ArrayList();
    int i=0;
    while(i < liste1.Count)
      {
        double calcul1 = ((double)((MaClasse)(liste1[i])).Atrib1) + ((double)((MaClasse)(liste2[i])).Atrib1);
      //on répète la ligne ci-dessus au tant d'attribut qu'on a!!
     MaClasse monobjet = new MaClasse(calcul1,......);
     liste3.add(monobjet);
    i++;
      }
    c'est une réponse tardive, mais je voulais répondre pour que ça soit résolu.
    Merci.

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

Discussions similaires

  1. petit soucis avec les listes
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/09/2005, 10h08
  2. [langage] probleme avec les listes dans des listes
    Par pqmoltonel dans le forum Langage
    Réponses: 7
    Dernier message: 27/04/2004, 12h32
  3. [LG]Les listes
    Par franck H dans le forum Langage
    Réponses: 2
    Dernier message: 16/01/2004, 15h15

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