none
Comparer 2 ListDictionary RRS feed

  • 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

    samedi 24 mars 2012 17:09

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 C

    Considérez-vous les listes comme égales ?


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    lundi 26 mars 2012 07:21
  • 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

    mardi 27 mars 2012 19:20

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 C

    Considérez-vous les listes comme égales ?


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    lundi 26 mars 2012 07:21
  • 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

    mardi 27 mars 2012 19:20
  • 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

    mardi 27 mars 2012 21:13