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

ASP.NET Discussion :

Coller deux array l'un à côté de l'autre


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Coller deux array l'un à côté de l'autre
    Bonjour tout le monde.

    Je ne suis pas trés doué encore avec les manipulation de Array et de String()

    Pour l'instant j'ai ça dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim lstChamp As String() = Split(ListeChamp, ",")
    ça me prend un suite de chaine séparée par des virgules et ça marche bien.
    Maintenant je voudrais rajouter une deuxième "colonne" dans le lstChamp.

    J'ai une autre liste, en rapport avec la première, que je voudrais metre en corrélation. Sauf que e trouve pas le moyen de la fire. Et dans la doc, c'est pas clair, je comprends pas ce qu'ils disent. Pour l'instant la seule chose que j'arrive à faire c'est les mettre l'un en dessous de l'autre.

    Pouvez vous m'aider ?

  2. #2
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Bonjour zooffy,

    Maintenant je voudrais rajouter une deuxième "colonne" dans le lstChamp
    Qu'est ce que tu appelles une 2eme colonne ?

    J'ai une autre liste, en rapport avec la première, que je voudrais metre en corrélation
    précise ta corrélation si tu veux bien.
    Veux tu insérer la deuxieme liste en position impaire de la première ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    donne nous du concret, parce que là on comprend pas très bien ce que tu cherches à faire...

  4. #4
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci les gars.

    Alors je voudrais faire un tableau à deux colonnes dans un String()

    Quand tu fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim lstChamp As String() = Split(ListeChamp, ",")
    Tu obtiens un tableau à une colonne que tu peux appeller de la manière suivante :
    Ben moi je voudrais ajouter une deuxième colonne à côté et pouvoir faire un deuxième Split avec une autre chaine.

    En gros, j'ai deux chaines de caratère qui sont des listes. La première contient les noms des champs, la deuxième la valeur des champs. donc je voudrais metre tout ça dans un tableau cohérent et pouvoir les appellés, genre :
    Suis je plus clair ?

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Un Dictionary serait plus pratique à utiliser qu'un tableau, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim lstChamp As String() = ListeChamp.Split(",")
    Dim lstValeur As String() = ListeValeur.Split(",")
    Dim dic As New Dictionary(Of String, String)
    For i As Integer = 0 To lstValeur.Length
        dic.Add(lstChamp(i), lstValeur(i))
    Next
    Comme ça tu peux l'utiliser de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim valeurDeToto As String = dic("Toto")
    Sinon, avec Linq on pourrait faire quelque chose comme ça (*) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim dic = ListeChamp.Split(",") _
                    .Zip(ListeValeur.Split(","), Function(c, v) New With { .Champ = c, .Valeur = v }) _
                    .ToDictionary(Function(e) e.Champ, Function(e) e.Valeur)
    (*) : en fait la méthode d'extension Zip n'existe qu'à partir de .NET 4.0... On peut la recoder assez facilement en C# :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            private static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>(this IEnumerable<TFirst> first, IEnumerable<TSecond> second, Func<TFirst, TSecond, TResult> selector)
            {
                using (var enum1 = first.GetEnumerator())
                using (var enum2 = second.GetEnumerator())
                {
                    while (enum1.MoveNext() && enum2.MoveNext())
                    {
                        yield return selector(enum1.Current, enum2.Current);
                    }
                }
            }
    Malheureusement, vu que ça utilise un itérateur, on ne peut pas le traduire facilement en VB... Tu peux toujours mettre ça dans une DLL C# que tu références dans ton projet VB, mais bon, au final la première approche est sans doute plus simple

  6. #6
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour vos deux solutions que je trouve vachement bien.

    Maintenant, je m'aperçois que j'ai oublié de préciser comment je voulais m'en servir !!!

    Une fois mon "tableau" constitué je veux le lire séquentiellement avec un For Each.

    Alors, sur le Dictionnary, ça me parait vachement bien ce truc, mais seulement quand on connait les valeurs recherchées. Dans mon cas ici, ce n'est pas le cas et du coup, j'ai du mal à le lire.

    Ensuite la List Of, je connaissais mais j'avais pas pensé à l'utiliser comme ça. Du reste, je savais pas trop comemnt lui coller deux lsite dans le buffet.

    Mais l'ennui c'est qu'elle ne veux pas rentrer dans le For Each

  7. #7
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Ok c'est beaucoup plus claire

    Je te conseille les listes qui te permettront d'ajouter autant de ligne que tu le souhaites.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim list As New List(Of String())() 
     
    list.Add(Split(ListeEntete, ",")) 
    list.Add(Split(ListeChamp1, ",")) 
    list.Add(Split(ListeChamp2, ",")) 
     
    Dim premierEntete As String = list(0)(0) 
    Dim premiereLignePremierChamp As String = list(1)(0) 
    Dim premiereLigneSixiemeChamp As String = list(1)(5)

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

Discussions similaires

  1. (GUI Builder) Coller deux JPanel
    Par Mattgic dans le forum NetBeans
    Réponses: 2
    Dernier message: 16/10/2009, 16h31
  2. Comparer deux array
    Par snyfir dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/02/2009, 06h54
  3. [Tableaux] calcul sur deux array
    Par gemça dans le forum Langage
    Réponses: 5
    Dernier message: 19/12/2007, 07h29
  4. Comparaison de données entre deux arrays
    Par sironimo dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 20/04/2006, 17h44
  5. [ImageMagick] Coller deux images
    Par Todd62 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 27/02/2006, 09h08

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