Bonjour,

je ne sais aps trop oú chercher alors je m'adresse à vous pour avoir au moins un bout de piste...

Voilà , j'ai deux listes d'objet CategoryProvider. Ces deux listes sont instancies a partir du meme jeu de donnees sauf qu'une concerne les categories d'un projet et l'autre contient toutes les categories possible.

Ce que je souhaiterais faire, c'est récuperer les categories qui n'appartiennt pas a ce projet. En linq ca me fait quelquechose comme cela :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
var results = ListAllCategory.Except(Project.Categories);
Mon probleme est qu'aucun element ne match alors que certains sont à 100% egaux. Je ne vois pas comment lui faire comprendre que ce categoryprovider est bien egal À cet autre la car ils ont les memes données..

merci de votre coup de patte sur ce probleme...

[Edit]

J'arrive maintenant a ce que les deux category provider se reconnaissent grace a la surcharge des operateurs Equals et == dans la classe.

Malheureusement cela n'a aucune incidence sur l'instruction except, si quelqu'un a des lumieres la dessus....

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
public override bool Equals(object obj)
        {
            CategoryProvider category = obj as CategoryProvider;
 
            //verify that the objet taken in reference is a categoryProvider
            //and at the same time deals with the case where the object is null
 
            if (!CategoryProvider.ReferenceEquals(category, null))
                //do the comparaison
                return ID == category.ID;
 
            return false;
        }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
        public static bool operator ==(CategoryProvider c, object o)
        {
            //deals with the case where the two reference are null
            if(CategoryProvider.ReferenceEquals(c,null))
            {
                return CategoryProvider.ReferenceEquals(o,null);
            }
            return c.Equals(o);
        }

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
        public static bool operator !=(CategoryProvider c, object o)
        {
            return !(c == o);
        }
[Edit]