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 :

IndexOfValue et SortedList


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 152
    Par défaut IndexOfValue et SortedList
    Bonjour

    J'ai une classe définie de cette façon

    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
    Public Class Toponyme
     
        Public Sub New()
        End Sub
     
        Public Property sCodePostal() As String
        Public Property sCodeINSEE() As String
        Public Property sDéfOriginal() As String
        Public Property sIndex() As String
        Public Property sLatitude() As String
        Public Property sLongitude() As String
        Public Property sNom() As String
        Public Property sNomDépartement() As String
        Public Property sNomPays() As String
        Public Property sNomRégion() As String
     End Class
    Puis une SortedList déclarée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Communes As New SortedList(Of String, Toponyme)
    Je renseigne ma SortedList à l'aide d'un objet oCommune As New Toponyme et la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim oToponyme As New Toponyme
    Communes.Add(oToponyme.sIndex, oToponyme)
    ou sIndex contient la chaine unique d'indexation

    Pour retrouver une commune j'utilise la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim oToponyme As New Toponyme
    sComRecherchée="Paris75000"
    bTrouvé = CommunesSource.TryGetValue(sComRecherchée, oToponyme)
    Mais J'ai également besoin de retrouver une commune par un autre champs comme par exemple son Code INSEE via sCodeINSEE

    j'ai donc le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim i as integer
    Dim oCom As New Toponyme
    oCom.sCodePostal="75000"
    i= Communes(IndexOfValue(oCom)
    Mais i est sytématiquement ègale à -1.

    Il s'agit en fait de retrouver la position dans la SortedList d'un objet Toponyme dont la propriété sCodePostal est donnée.
    L'aide de MSDN explique bien le procédé quand la liste contient une chaine de caractères ou des nombres pas pas pour des objets.

    Merci pour votre aide

    Bernard

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Parce que, comme déjà dis dans l'autre post, SortedList est une sorte de dictionnaire.

    Ca te permets d'accéder à un objet via une clé, ça pas de souci.
    Par contre pour avoir une clé, il faudrait lui passer en paramètre, l'objet complet lui-même...

    Je persiste que une List(Of ) suffit, et utiliser Link pour trouver un objet (ou liste d'objet) serait la meilleur solution :



    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
    Public Class Toponyme
     
        Public Sub New()
        End Sub
     
        Public Property sCodePostal() As String
        Public Property sCodeINSEE() As String
        Public Property sDéfOriginal() As String
        Public Property sIndex() As String
        Public Property sLatitude() As String
        Public Property sLongitude() As String
        Public Property sNom() As String
        Public Property sNomDépartement() As String
        Public Property sNomPays() As String
        Public Property sNomRégion() As String
     End Class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Communes As New List(Of Toponyme)
     
    Dim oToponyme As New Toponyme
    Communes.Add(oToponyme)

    Pour trouver un élément, par exemple les ville d'un code postale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim ListResultat as New List(Of Toponyme)
    ListResultat = Communes.Where(Function(t) t.sCodePostal = "75000").ToList

  3. #3
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Sinon tut e fais aussi une classe qui gère tes communes, c'est le but des classes,

    Et tu t'écris toi même les procédure :

    - GetCommuneByPostalCode
    - GetCommuneByCity

    en utilisant des boucle sur ta liste de communes...



    En gros plutôt que de faire une classe, qui n'est en fait d'une structure qui contient des données, tu écris une classe qui contient et gère une liste de commune... Si tu vois ce que je veux dire

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

Discussions similaires

  1. Trier par value au lieu de key dans une SortedList
    Par Griswold dans le forum VB.NET
    Réponses: 4
    Dernier message: 23/12/2008, 20h56
  2. Tri automatique SortedList
    Par DiamonDonald dans le forum VB.NET
    Réponses: 2
    Dernier message: 07/07/2008, 17h55
  3. [WPF] Problème de binding entre une SortedList et une ListBox
    Par Invité dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 10/12/2007, 13h20
  4. liste triée mais pas SortedList :p
    Par duaner dans le forum C#
    Réponses: 6
    Dernier message: 19/09/2007, 17h10
  5. Réponses: 4
    Dernier message: 12/05/2006, 11h08

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