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 :

Récupérer une valeur [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Récupérer une valeur
    Bonjour,

    le but de mon programme est de décomposer un fichier csv ou les données sont séparé par des virgules.
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ID,Nom,Age
    1,Jean,19
    2,Jason,15
    3,Lucas,18
    j'aimerais récupérer une valeur dans une liste mais je n'y arrive pas, pouvez vous m'aider ?

    Voici la déclaration de ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            public class Donnees {
                public int Id { get; set; }
                public string Nom { get; set; }
                public int Age { get; set; }
            }

    Voici la déclaration de ma liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            public List<Donnees> Virgule(string fichier) {
                    var lignes = File.ReadAllLines(fichier);
                    var valeur = from i in lignes.Skip(1)
                                 let split = i.Split(',')
                                 select new Donnees {
                                     Id = int.Parse(split[0]),
                                     Nom= split[1],
                                     Age = int.Parse(split[2]),
                                 };
                    return valeur.ToList();
             }
    Merci d'avance

  2. #2
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public List<Donnees> Virgule(string fichier) {
                    var lignes = File.ReadAllLines(fichier);
                    var valeur = from i in lignes.Skip(1)
                                 let split = i.Split(',')
                                 select new Donnees {
                                     Id = int.Parse(split[0]),
                                     Nom= split[1],
                                     Age = int.Parse(split[2]),
                                 };
                    return valeur.ToList();
             }
    Je ne suis pas un adept de cette écriture là, mais il me semble que la requête Linq n'est pas correcte. J'aurais fais quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return lignes.Select(c => new Donnee() {c.split(',')[0],c.split(',')[1],c.split(',')[2]}).ToList();
    Autres remarques :
    • Tu dis "j'aimerais récupérer une valeur dans une liste mais je n'y arrive pas, pouvez vous m'aider ?", un minimum serait d'expliquer ce qui ne marche pas.
    • Attention quand tu nommes tes variables. "let split = i.Split(',')" peut porter à confusion.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Merci de ta réponse,

    tout mon code marche mais je n'arrive pas à récupérer une valeur.

    je pensais faire avec un i qui serait incrémenté par exemple.

    mais lorsque je fais ça j'ai une message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'MainWindow.Donnees.Id'
    pourtant rien n'est en static, j'ai également mis en static mais ça ne change rien

  4. #4
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Petite correction de ce que j'ai envoyé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return lignes.Select(c => new Donnee() {Id = c.split(',')[0], Nom = c.split(',')[1], Age = c.split(',')[2]}).ToList();

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par ZenZiTone Voir le message
    Petite correction de ce que j'ai envoyé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return lignes.Select(c => new Donnee() {Id = c.split(',')[0], Nom = c.split(',')[1], Age = c.split(',')[2]}).ToList();
    Merci ça marche j'ai du faire une petit modification pour les int :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return lignes.Select(c => new Donnees() { Id = int.Parse(c.Split(',')[0]), Nom = c.Split(',')[1], Age = int.Parse(c.Split(',')[2]) }).ToList();
    C'est vrai que c'est mieux, mais serais tu comment je pourrais récupérer les valeurs ? Par exemple le premier Id avec le premier nom et le premier age ?
    Je penses qu'il faudrait utiliser une boucle for. Mais comme je l'ai dit précédemment je n'arrive pas à récupérer une donnée avec

  6. #6
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Tu peux parcourir les listes d'objets avec une boucle foreach :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach (Donnee d in MesDonnees)
    {
       //d est un élément de ta liste de résultat
       var toto = d.Id;
    }
    Sinon, si tu veux parcourir tes éléments avec la boucle for, tu dois procéder comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int i = 0; i<MesDonnees.Count;i++)
    {
       var toto = MesDonnes[i].Id;
    }
    Tu as une liste d'objets. Tu récupères donc un de tes objets pour ensuite récupérer la propriété de ce même objet.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Merci pour tout !
    Je vais essayer tout ça et je reviens vers toi si j'ai d'autres questions

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

Discussions similaires

  1. [XSL]récupérer une valeur de plusieurs fichiers XML
    Par snoop dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 05/02/2006, 00h32
  2. Réponses: 5
    Dernier message: 09/09/2005, 17h51
  3. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/08/2005, 17h49
  4. Réponses: 2
    Dernier message: 17/06/2005, 13h38
  5. Réponses: 2
    Dernier message: 11/12/2004, 21h20

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