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