Bonjour :)
Quelqu'un connaîtrait-il un algo C# pour détecter des doublons dans une List<string> ?
Ou y-t-il déjà qqch de prévu dans le framework ?
Merci bien :)
Version imprimable
Bonjour :)
Quelqu'un connaîtrait-il un algo C# pour détecter des doublons dans une List<string> ?
Ou y-t-il déjà qqch de prévu dans le framework ?
Merci bien :)
Utilise la méthode Contains :)
List<String> list = new List<String>();
foreach(string s in list)
{
if (list.Contains(s))
{
// Ta liste contient s
}
}
Salut,
Morpheus, je crois que ton algorithme n'est pas bon, la liste contient forcement s.Citation:
Envoyé par Morpheus
Ou surement tu voulais faire ca :
Code:
2
3
4
5
6
Ah oui, c'est pas bête: je me disais bien qu'il manquait des lignes d ecode :lol:
Enfin, l'important ici, c'est tout de même la méthode Contains ;)
:P
T'inquiete on est là pour terminer tes lignes de codes manquantes, tu n'a qu'à proposer l'idée :lol:
Ah, pas mal ton algo :)
Je me disais bien qu'il fallait pas prendre chaque élément et les comparer à tous les autres :lol:
Par contre, il manque la fin de l'algo.
Je suppose qu'il suffit de comparer le nombre d'élements de chaque liste, et si ceux-ci sont différents, c'est qu'il y avait un doublon dans la liste.
Merci bcp à vous en tout cas :)
Ah la non je ne savais qu'il fallait juste savoir s'il y avait des doublons
dans ce cas :
Pas la peine de terminer la boucle dés que tu trouve le premier doublon tu sors (break;)Code:
2
3
4
5
6
7
8
9
10
11
12
Ah oui, pas bête...
Je commanderai un cerveau pour Noël :mouarf:
Mici bien :)
Bonjour,
Je reviens sur ce topic.
La méthode proposée par mehdi_tn fonctionne parfaitement si votre liste est composé de string.
De mon côté, j'ai une liste contenant des objets personne.
Like this :
J'ai besoin de supprimer les doublons de ma liste sur deux attributs de mon objet personne (ex : le nom et le prénom)Code:
2
En gros, si une personne a le meme nom & le meme prénom qu'un autre alors je le supprime.
Visiblement je ne peux pas utiliser la méthode Contains, exact ?
Thx
peu être qu'en implémentant l'interface IComparable ca résoudrait le problème?
Je t'avoue y avoir penser mais je ne maitrise pas vraiment le sujet :oops:
Si tu as un exemple de code ?
Salut dacamp, tu es en quelle version du framework ?
je suis en 2.0 sinon je ne pourrais pas utiliser les Collections.Generic tel que les listes fortement typées ;)
La méthode contains et l'interface IComparabale existent depuis le framework 1.0, avant que les listes génériques voient le jour dans Dot Net, d'où ma question.
D'abord cherche dans le forum Dot Net IComparable ; tu trouveras plein d'exemples.
Sinon y'a l'exemple de msdn CompareTo
à lequel tu dois surcharger la méthode equals , voici un exemple Override methods on comparable types
Je sais que cela existe mais je ne le maitrisais déjà pas tres bien en 1.0.
J'utilise la méthode Compare pour trier ma liste typée au préalable afin d'optimiser (je l'espère) le futur dédoublonnage 8O
Maintenant, je ne comprends pas pourquoi la méthode Contains me sort que deux objets personnes sont différents alors que tous les attributs de mon objet sont identiques ... je seche complet. Enfin, je vais creuser un peu plus le problème et je reviendrai pour donner le résultat de mes recherches
Démonstration par l'exemple.
Distri est une classe contenant une liste d'attributs + getter et setter
Le résultat de ce morceau de code m'indique qu'il passe dans le résultat du if. Il m'ajoute donc un 2ème élément à la liste v_listeSansDoublon.Code:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Parce que la comparaison se fait par defaut sur les references, tu dois modifier ce comportement.Citation:
Envoyé par dacamp
Pour ton probleme, montre comment tu as implementer Distri.
Merci de ton aide, c'est bien cool :D
Voici ma classe Distri
Code:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
Je tente une idée : on doit modifier
la classe EqualityComparer ??
Oui t'as raison, je suis parti sur une mauvaise piste : je pensais à la fonction de tri de la list.
en fait ta classe doit implementer l'interface IEquatable
Par exemple :
Code:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17