Bonjour à tous,
J'ai un petit pépin !
J'ai actuellement un dictionnaire<int,ArrayList> et je voudrais trier les élements dans mon dictionnaire selon la première valeur de mon arrayList.
Le tri devrait se retrouver selon l'ordre 2,1,3.Code:
1
2
3
4
5 Dictionary<int, ArrayList2> dico = new Dictionary<int, ArrayList2>(); dico.Add(2, new ArrayList { "1000", "ahah" }); dico.Add(3, new ArrayList { "20000", "ahah" }); dico.Add(1, new ArrayList { "2020", "ahah" });
J'ai essayé avec la methode OrderBy
dico = dico.OrderBy(kvp => kvp.Value).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
Ça me dit qu'au moins un objet doit implémenter iComparable
Je ne suis pas certain de comprendre le problème.
J'ai donc regarder sur le web, je suis créer une classe ArrayList2 qui implemente ArrayList et iComparable et j'y ait redéfini CompareTo
La aussi ça semble foirer, car il compare avec les autres élements du même ArrayList et pas avec les autres ArrayList du dictionnaire.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 class ArrayList2 : ArrayList, IComparable { public int CompareTo(Object o){ if (o == null) return 1; ArrayList arr = o as ArrayList; if (arr != null) { return arr[0].ToString().CompareTo(arr[1].ToString()); } return 0; }
Pourtant, si je veux trier par la valeur....
Fonctionne #1 !Code:dico = dico.OrderBy(kvp => kvp.Key).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
Auriez-vous une idée, une piste de solution ?
Merci :D