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 :

lire dans un fichier avec linq [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Par défaut lire dans un fichier avec linq
    Bonjour tout le monde,

    Je suis débutante en asp.net et dans le cadre de mon stage je dois lire des données dans un fichier excel. Je m'explique :
    je voudrais afficher dans un rapport le niveau 2 (divisions) du code naf pour effectuer des statistiques. Cependant dans la base de données je n'ai que le dernier niveau ainsi que le libellé correspondant. Le problème est qu'on ne peut pas faire des statistiques avec ça car ce n'est pas assez parlant. J'ai donc récupérer les deux premiers chiffres à l'aide d'un substring et maintenant ce que je voudrais faire c'est dans ma requête (située dans une méthode de mon controller) je voudrais récupérer le libellé contenu dans un fichier (excel ou txt peu importe) en comparant le code. J'ai essayé pas mal de chose, j'ai regardé les exemples dans msdn mais je n'arrive pas. J'ai même essayé de créer une structure pour y placer les données mais je n'arrive pas à récupérer mon libellé.

    Voici ce que j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    string[] libNiv1 = File.ReadAllLines(@"./Ressources/naf_division.xls");
     
                IQueryable<libNaf> naf = from result in libNiv1.AsQueryable<string>()
                                         let splitLib = result.Split(',')
                                         where splitLib[0] == codeNaf
                                         select new libNaf()
                                         {
                                             code = codeNaf,
                                             libelle = splitLib[1]
                                         };
    List<libNaf> libelleNaf = naf.ToList();
     
                return libelleNaf;
    Merci beaucoup d'avoir pris le soin de lire mon message et merci d'avance si vous avez la réponse.
    Bonne journée.

  2. #2
    Membre émérite Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Par défaut
    Bonjour angel,


    Deux chose : peut tu utiliser la balise code et indenter celui ci car on comprend pas très bien la requête Linq que tu as écrit (qui n'as pas l'air correcte par ailleurs).
    Et à propos de requête, fonctionne t elle ? Est ce celle que tu teste pour récupérer ton deuxième niveau et elle ne compile pas ou ne s'exécute pas correctement ? As tu des retours d'erreurs enfin un peu plus d'infos serais le bien venu.
    J'avoue n'avoir pas tout compris mais je pense qu'il manque des élément d'informations.

    Merci.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Par défaut
    Bonjour,

    Enfait je créer le code naf dans un fichier nommé extended :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string code = this.NAF.Trim().Substring(0, 2);
    ensuite je voudrais appeler la méthode située dans mon controller pour me retourner le libellé du code passé en paramètre mais sa ne fonctionne pas. J'ai exécuté mon code mais sa ne fonctionne pas. Je ne sais pas comment faire je veux simplement ajouté dans une variable le code naf et son libellé s'a paraît simple mais je n'y arrive pas.

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Par défaut
    Avant de modifier ma méthode je l'avais écrite comme ceci :

    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
    public static List<string> FindNafNiveau1(EntrepotEntities EntrepotE, string codeNaf)
            {
                string[] libNiv1 = File.ReadAllLines(@"./Ressources/naf_division.xls");
     
                IQueryable<string> naf = from result in libNiv1.AsQueryable<string>()
                                              where result[0].ToString() == codeNaf
                                              select result[1].ToString();
     
                List<string> nafNiv1 = new List<string>();
     
                foreach (string libelle in naf)
                {
                    if(!nafNiv1.Contains(codeNaf + " - " + libelle))
                    {
                        nafNiv1.Add(codeNaf + " - " + libelle);
                    }
                }
     
                nafNiv1 = nafNiv1.AsQueryable<string>().OrderBy(result => result).Distinct<string>().ToList<string>();
     
                if (nafNiv1 != null && nafNiv1.Count<string>() > 0)
                {
                    return nafNiv1;
                }
                else
                {
                    return null;
                }
            }
    et dans mon fichier extended j'ai essayé de la récupérer comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string code = this.NAF.Trim().Substring(0, 2);
    string libelle = EntrepriseController.FindNafNiveau1(code);
    mais j'avais un message d'erreur qui me disait que je ne pouvait pas convertir un List<string> en string.

    Je ne sais pas si je suis très clair, je ne sais pas trop comment expliquer mon problème je débute en mvc et c'est pas facile.

    Merci

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Par défaut
    worm83,

    J'ai repris de zéro mon problème et avant tout j'ai crée une petite listbox pour voir si j'affiche ce que j'ai dans mon fichier. Après plusieurs test et corrections de bug j'arrive à lire ce que j'ai dans mon fichier txt. J'ai écris une méthode bête et méchante qui me liste mon fichier et ça marche donc première étape réussi. Je pense que je me prend trop la tête lol.

    voici mon code ça change par rapport à ce matin :
    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
     
    public static List<string> FindLibelleNaf(EntrepotEntities EntrepotE)
            {
                string[] libNiv1 = File.ReadAllLines(@"..\..\..\..\..\C#\EntrepotDev\Ressources\naf_division.txt");
     
                IQueryable<string> naf = from result in libNiv1.AsQueryable<string>()
                                         //let splitLib = result.Split(';')
                                         select result;
     
                naf = naf.Distinct<string>().OrderBy(result => result);
                if (naf != null)
                {
                    return naf.ToList<string>();
                }
                else
                {
                    return null;
                }
     
            }
    Merci beaucoup de m'avoir aidé et conseillé. Je vais continuer sur cette voie je pense que je ne suis pas loin de ce que je voulais faire.
    Bonne journée.

  6. #6
    Membre émérite Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Par défaut
    Salut,

    Désolé je ne t'ai pas aidé a grand chose, à part peut être te forcer a cibler ton problème, je n'ai pas eu le temps de regarder ton soucis par la suite. L'essentiel est que tu te soit débloquée toute seule ca te permettra de mieux comprendre.

    N'hésite pas.

    Bon courage

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Par défaut
    Et voilà le travail j'ai enfin réussi à afficher le libellé dans mon rapport ça m'a pris du temps car en fait c'était plus simple qu'il n'y paraît mais bon je suis contente j'ai ce que je voulais. Si des personnes ont le même soucis que moi je serais contente de leur apporter une petite aide.

    Bonne journée à tous

  8. #8
    Membre émérite Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Par défaut
    Salut,

    Mes félicitation. Pense au tag résolu

    Bonne journee

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 13/07/2012, 10h39
  2. Lire dans un fichier ligne par ligne avec fscanf
    Par fuyo2004 dans le forum Débuter
    Réponses: 4
    Dernier message: 17/02/2012, 21h20
  3. Lire dans un fichier .txt avec separateur
    Par seiken02 dans le forum C++Builder
    Réponses: 6
    Dernier message: 04/05/2010, 16h05
  4. Lire DANS un fichier wav avec VBA
    Par SwissEngineer dans le forum Général VBA
    Réponses: 7
    Dernier message: 01/12/2006, 17h56
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 16h17

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