[Résolu] [C#] Mettre à jour une List à partir d'une autre

Mettre à jour une List à partir d'une autre [Résolu] [C#] - C#/.NET managed - Programmation

Marsh Posté le 30-07-2006 à 23:13:53    

Bonjour à tous :)
 
J'ai deux listes d'objets bien à moi. Les objets sont des instances de la même classe "myClass" ayant deux propriétés : "id" et "pseudo"
List<myClass> myList1 = ...
List<myClass> myList2 = ...
Mon but est de détecter tous les élements de la liste myList2 qui ont leur "id" qui n'existe pas dans la liste myList1.  
En gros, c'est comme utiliser la méthode List.Contains(), mais sur une propriété de l'objet et non l'objet lui-même.  
 
Je n'arrive pas vraiment à écrire d'algo, et je me demande s'il ne faut pas plutôt que je créer mon propre type de liste (INumerable) et overrider la méthode Contains()... ou qqch comme ça.  
 
Merci bien si vous pouvez m'éclairer, en espérant que j'ai été clair... :)


Message édité par Roodie le 01-08-2006 à 18:56:49
Reply

Marsh Posté le 30-07-2006 à 23:13:53   

Reply

Marsh Posté le 01-08-2006 à 14:09:05    

Hmmm.. conceptuellement j'ai du mal à saisir.
Tu as plusieurs instances de myClass qui ont des ID différents ?
Y'as pas un pb dans ta conception objet ?
 
Sinon, pour ce que tu veux faire, utilise plutôt une Hashtable.

Code :
  1. // instancier
  2. Hashtable joe = new Hashtable();
  3. // ajouter une valeur
  4. joe.Add(myobject1.ID, myobject1);
  5. // vérifier qu'elle existe
  6. if(joe.Contains(ID_de_test))
  7.   // récupérer une valeur
  8.   MyClass myobject2 = joe[ID_de_test];

Reply

Marsh Posté le 01-08-2006 à 18:56:26    

Ah oui, pas bête :)
Ton répond à ma question je pense.  
J'ai aussi trouvé une autre solution en conservant la notion de liste. Qqch comme ça :  

Code :
  1. List<myClass> trouve = new List<myClass>();
  2. foreach (myClass obj in myList1)
  3. {
  4.    if (myList2.Exists(delegate(myClass mType) { return mType.ID == obj.ID; }))
  5.    {
  6.       trouve.Add(myList2.Find(delegate(myClass mType) { return mType.ID == obj.ID; }));
  7.    }
  8. }


...on m'a aidé...
Mici bien à toi :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed