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 :

remplissage d'une List de List


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut remplissage d'une List de List
    Bonjour

    J'ai besoin de remplir des List avec des données contenues dans un fichier CSV dont je ne connais pas le nombre de champ.

    J'ai déclaré une List de List, globale, comme ça (travail d'une matinée !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<List<MyClass>> MesList = new List<List<MyClass>>();
    sachant que myclass c'est ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            public class MyClass
            {
                public double myDate { get; set; }
                public double myValeur1 { get; set; }
                public double myValeur2 { get; set; }
            }
    maintenant je cherche à remplir ca en lisant ligne par ligne un fichier CSV avec ca
    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
    while (!MonFichier.EndOfStream)
    {
        string ligne = MonFichier.ReadLine();
        tabCSV = ligne.Split(';');
     
        string[] FormatsDates = new string[4] { "dd/MM/yyyy", "dd/MM/yyyy HH:mm:ss.fff", "dd/MM/yyyy HH:mm:ss", "dd/MM/yyyy HH:mm" };//formats possibles de date
     
        double date = DateTime.ParseExact(tabCSV[0], FormatsDates, null, System.Globalization.DateTimeStyles.None).ToOADate();
     
        for (int y = 1; y < NbChamps; y = y +2 )
        {
            double Min = Convert.ToDouble(tabCSV[y]);
            double Max = Convert.ToDouble(tabCSV[y+1]);
     
            MesList[y].Add(new MyClass { myDate = date, myValeur1 = Min, myValeur2 = Max }); //là ca merdoit
        }
    }
    Mais ça ne fonctionne pas, j'ai une exception dés la première exécution de la boucle :
    Une exception non gérée du type 'System.ArgumentOutOfRangeException' s'est produite dans mscorlib.dll

    Informations supplémentaires*: L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
    Je n'arrive pas à comprendre de quoi il parle. quel index ? quelle limite ?

    Merci par avance pour votre aiguillage !

  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
    Le nombre de string renvoyé par le split de la ligne est inférieur au nombre de champs attendu (cas d'une ligne vide, par exemple).

  3. #3
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    Merci pour la réponse mais je suis désolé, je ne comprends toujours pas

    Ça plante sur la ligne ou je tente de remplir la List de List (qui selon moi n'a pas de dimension)

    La boucle avec y, sur le nombre de champs a toujours strictement le même nombre de champs depuis le split avec le fichier que je teste ici. Ça fonctionne d’ailleurs très bien sur mon premier code où je remplis une simple List, pas une List de List.

    est inférieur au nombre de champs attendu
    De quel nombre de champs agirait il ? des champs de "String tabCSV" ou des champs de "List<List<MyClass>> MesList = new List<List<MyClass>>();" ?

    Merci

  4. #4
    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
    Comme il n'y a pas d'instruction du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MesListes.Add(new List<MyClass>()) ;
    MesListes n'a aucun élément.

  5. #5
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    aie, je savais bien que je n'avais pas tout compris aux objets...

    donc si je comprends mieux, quand j'ecris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<List<MyClass>> MesList = new List<List<MyClass>>();
    je déclare une liste d'objets qui seront du type List<MyClasse>, mais il me reste à ajouter les fameux objets de type List<MyClasse>.

    Mais du coup mon MesList[y] merdoit quand même quand j'ajoute le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MesListes.Add(new List<MyClass>())
    parce que le y est > au nombre d'élément de MesList, normal

    Comment puis-je designer par son nom ou son index ou??? l'élément de MesList que je viens d'ajouter ?

    Merci

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    et en laissant la liste se débrouiller avec ses index, ça ne vous convient pas?
    Genre :
    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
                    while (!MonFichier.EndOfStream)
                    {
                        string ligne = MonFichier.ReadLine();
                        tabCSV = ligne.Split(';');
     
                        string[] FormatsDates = new string[4] { "dd/MM/yyyy", "dd/MM/yyyy HH:mm:ss.fff", "dd/MM/yyyy HH:mm:ss", "dd/MM/yyyy HH:mm" };//formats possibles de date
     
                        double date = DateTime.ParseExact(tabCSV[0], FormatsDates, null, System.Globalization.DateTimeStyles.None).ToOADate();
                        double Min = Convert.ToDouble(tabCSV[1]);
                        double Max = Convert.ToDouble(tabCSV[2]);
     
                        List<MyClass > listMCl = new List<MyClass >();
                        listMCl.Add(new MyClass { myDate = date, myValeur1 = Min, myValeur2 = Max });
                        MesList.Add(listMCl); 
                    }

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

Discussions similaires

  1. [Toutes versions] remplissage d'une zone de liste sous condition
    Par chris_ij32 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/09/2012, 18h36
  2. remplissage d'une Zone de liste
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2008, 10h26
  3. Regrouper une liste en liste de listes
    Par West01 dans le forum Prolog
    Réponses: 12
    Dernier message: 14/03/2008, 14h07
  4. [MySQL] Remplissage d'une liste déroulante à partir d'une requête SQL
    Par gaucher dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 11/05/2006, 15h46
  5. [WD9] Non remplissage d'une liste dans un composant
    Par Romanops dans le forum WinDev
    Réponses: 3
    Dernier message: 06/04/2006, 17h05

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