Bonjour,

J'ai une petite question d’algorithmie.
Je dois avoir le cerveau gazé par ce lundi nuageux, mais il n'y a que des usines à gaz qui me viennent en tête, pour une problématique pourtant simple...

J'ai un objet :
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
class MonObjet
{
   public int id;
   public string nom;
 
   public MonObject(int ID, string NOM)
   {
        id = ID;
        nom = NOM;
   }
}

J'ai ensuite un List<MonObjet> initialisé de la sorte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
List<MonObjet> maliste = new List<MonObjet>();
List.Add(new MonObjet(1, "Obj1"));
List.Add(new MonObjet(2, "Obj2"));
List.Add(new MonObjet(3, "Obj3"));
List.Add(new MonObjet(3, "Obj3"));
List.Add(new MonObjet(1, "Obj1"));
List.Add(new MonObjet(1, "Obj1"));
Je souhaite trouver l'ID de MonObjet qui a le moins d'occurences dans ma liste.

J'ai pensé à faire une struct "Occurence" avec deux propriétés "id" et "nb", en faire un List, et pour chaque ligne de "maliste", alimenter une liste de "List<Occurence>", en incrémentant "nb" quand "id" existe déjà, ou en rajoutant une ligne...

Puis enfin parcourir mon "List<Occurence>" pour retrouver le "id" qui a le plus petit "nb".

Mais j'ai l'impression que je fais du grand n'importe quoi... Y'a pas plus simple ?

Ici, je voudrais donc retrouver "2".

Puisqu'il y a 3 occurences de l'id "1", 1 occurence de l'id "2" et 2 occurence de l'id "3".