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

VB.NET Discussion :

linq - ajouter index de ligne [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur STC, systèmes de supervision
    Inscrit en
    Juin 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur STC, systèmes de supervision
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 58
    Par défaut linq - ajouter index de ligne
    Bonjour à tous,

    Je souhaiterais ajouter un numéro de ligne dans un fichier texte grâce à la fonction linq...

    Pour le moment, je ne travail qu'avec deux variables :
    EntireText qui prend en mémoire le fichier texte
    NewText qui modifie EntireText pour mettre les 19 premiers caractères de chaque ligne sous forme d'une date
    (çà me permet ensuite de l'exploiter) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                EntireText = System.IO.File.ReadAllLines(openFile1.FileName)
                NewText = (From TheLines In EntireText
                           Select Convert.ToDateTime(LSet(TheLines, 19)) & Mid(TheLines, 20)).ToArray
    Je souhaiterais que la variable NewText prenne en plus l'indice de la ligne mais je ne vois pas trop comment faire...

    Le code suivant ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                NewText = (From TheLines In EntireText
                           Select MyLineNumber & " " & Convert.ToDateTime(LSet(TheLines, 19)) & Mid(TheLines, 20)).ToArray
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Public Function MyLineNumber() As Long
            If MyLineNumber = Nothing Then MyLineNumber = 0
            MyLineNumber = MyLineNumber + 1
            Return MyLineNumber
        End Function
    J'ai trouvé ce sujet qui pourrait aider mais je n'y arrive pas pour autant

    Merci d'avance!

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Tu peux utiliser la surcharge de la méthode Select proposée par LinQ To Object. Cela te permet de faire ceci :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim query = _
                fruits.Select(Function(fruit, index) _
                                  New With {index, .Str = fruit.Substring(0, index)})
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur STC, systèmes de supervision
    Inscrit en
    Juin 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur STC, systèmes de supervision
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 58
    Par défaut
    Bonjour,

    Je te remercie mais je n'arrive pas à exploiter ta réponse...

    Je dois tout d'abord déclarer fruits (dim fruits as object ?!)
    Après quoi il me met un warning disant que fruits est utilisé avant qu'une valeur ne lui soit assignée.

    Puis quand je démarre le programme, il bugg sur cette ligne avec pour notif : "L'exception NullReferenceException n'est pas gérée - Variable objet ou variable d'un bloc With non définie."

    Tu pourrais m'en dire plus stp?

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur STC, systèmes de supervision
    Inscrit en
    Juin 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur STC, systèmes de supervision
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 58
    Par défaut
    Enfaite c'est bon, j'ai trouvé ta reference ;-)

    Merci

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur STC, systèmes de supervision
    Inscrit en
    Juin 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur STC, systèmes de supervision
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 58
    Par défaut
    J'ai réussi!

    C'est tiré par les cheveux mais çà marche!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                EntireText = System.IO.File.ReadAllLines(openFile1.FileName)
                'NewText = (From TheLines In EntireText
                '           Select Convert.ToDateTime(LSet(TheLines, 19)) & Mid(TheLines, 20)).ToArray
                Dim query = EntireText.Select(Function(EntireText, index) New With {index, EntireText})
                Dim output As New System.Text.StringBuilder
                For Each obj In query
                    output.AppendLine(RSet(obj.index, 6) & "     " & obj.EntireText)
                Next
                RichTextBox1.Text = output.ToString()
                NewText = RichTextBox1.Lines

    merci DotNetMatt de m'avoir mis sur la piste

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur STC, systèmes de supervision
    Inscrit en
    Juin 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur STC, systèmes de supervision
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 58
    Par défaut
    Par contre, si quelqu'un sait comment transformer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                RichTextBox1.Text = output.ToString()
                NewText = RichTextBox1.Lines
    en une ligne qui ressemblerait à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                NewText = output.ToString()
    mais qui marche (NewText est un tableau); je suis preneur!

    J'imagine qu'il faudra transformer l'intérieur de la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    output.AppendLine(RSet(obj.index, 6) & "     " & obj.EntireText)
    En attendant, je classe le sujet comme résolu =)

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

Discussions similaires

  1. [Débutant] Linq et Index de ligne pour condition
    Par shaun_the_sheep dans le forum C#
    Réponses: 2
    Dernier message: 04/10/2013, 14h18
  2. [Struts] Index de ligne dans 1 tableau
    Par javaSudOuest dans le forum Struts 1
    Réponses: 9
    Dernier message: 20/10/2005, 10h52
  3. [AbstractTableModel] ajout d'une ligne
    Par b_52globemaster dans le forum Composants
    Réponses: 7
    Dernier message: 29/07/2005, 14h09
  4. [debutant] [JTable] ajout d'une ligne
    Par lanfeustdetroll dans le forum Composants
    Réponses: 1
    Dernier message: 29/06/2005, 19h19
  5. [C#] Ajout d'une ligne dans un dataset
    Par frechy dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/12/2004, 10h35

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