Meilleur auteur de réponses
Comparer 2 ListDictionary

Question
-
Bonjour,
J'ai 2 ListDictionary, chacune comporte une cinquantaine de paires Key,Value
Afin de faire un update sur une linqdatasource, je souhaite le faire uniquement quand la listdictionary OldValue est différente de la listdictionary NewValue.
OldValue.Eqauls(NewValue) retourne toujours False ??? même quand elles sont pareilles.
Une idée SVP?
UOLAD
Réponses
-
La méthode Equals vous retourne si les 2 références d'objets sont la même référence. Ca n'a rien à voir avec le contenu des listes.
Si vous voulez comparer les deux listes, il faut itérer dessus et comparer si le contenu est le même. (on peut implémenter IComparable sur les classes à comparer pour simplifier le code).
Mais une question :
Si j'ai une liste avec A, B et C
Et si dans la deuxième liste j'ai : B, A et CConsidérez-vous les listes comme égales ?
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone- Proposé comme réponse Ciprian Duduiala lundi 26 mars 2012 09:32
- Marqué comme réponse Ciprian Duduiala mercredi 28 mars 2012 06:37
-
Bonjour,
Dans mon cas, effectivement je dois comparer entre les contenu des liste. Dons si j'ai A,B,C dans une et B,A,C dans l'autre je les considère égale.
Je m'en suis sortie avec ce lien :
http://stackoverflow.com/questions/3765976/why-would-this-code-complain-about-the-arity-of-the-generic-type-definition et en adaptant avec une classe ListDictionaryComparer : IComparer<ListDictionary>
Ca fonctionne ...
(Je pourrai, si besoin, récupérer mon code pour vous l'envoyer)
Merci
UOLAD
- Marqué comme réponse Ciprian Duduiala mercredi 28 mars 2012 06:37
Toutes les réponses
-
La méthode Equals vous retourne si les 2 références d'objets sont la même référence. Ca n'a rien à voir avec le contenu des listes.
Si vous voulez comparer les deux listes, il faut itérer dessus et comparer si le contenu est le même. (on peut implémenter IComparable sur les classes à comparer pour simplifier le code).
Mais une question :
Si j'ai une liste avec A, B et C
Et si dans la deuxième liste j'ai : B, A et CConsidérez-vous les listes comme égales ?
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone- Proposé comme réponse Ciprian Duduiala lundi 26 mars 2012 09:32
- Marqué comme réponse Ciprian Duduiala mercredi 28 mars 2012 06:37
-
Bonjour,
Dans mon cas, effectivement je dois comparer entre les contenu des liste. Dons si j'ai A,B,C dans une et B,A,C dans l'autre je les considère égale.
Je m'en suis sortie avec ce lien :
http://stackoverflow.com/questions/3765976/why-would-this-code-complain-about-the-arity-of-the-generic-type-definition et en adaptant avec une classe ListDictionaryComparer : IComparer<ListDictionary>
Ca fonctionne ...
(Je pourrai, si besoin, récupérer mon code pour vous l'envoyer)
Merci
UOLAD
- Marqué comme réponse Ciprian Duduiala mercredi 28 mars 2012 06:37
-
Mouai, faut quand même faire attention à l'inversion d'élément dans les listes. Mais c'est plus un pb d'algo (logique) que de dev ;-)
Bonne continuation
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone