Comment récupérer nème élément dans le dictionnaire? [dupliquer]
possibilité de duplication:
Comment puis-je obtenir le nième élément d'un dictionnaire?
S'il y a un Dictionary
avec un total de Y
articles et nous avons besoin de N
e article quand N
< Y
alors comment y arriver?
exemple:
Dictionary<int, string> items = new Dictionary<int, string>();
items.add(2, "Bob");
items.add(5, "Joe");
items.add(9, "Eve");
// We have 3 items in the dictionary.
// How to retrieve the second one without knowing the Key?
string item = GetNthItem(items, 2);
comment écrire GetNthItem()
?
4 réponses
n'est pas commandé. Il n'est pas n-ième élément.
used Ordereddiction and Item ()
A Dictionary<K,V>
n'a pas d'ordre intrinsèque, donc il n'y a vraiment pas de concept comme le Nth item:
cela dit, si vous voulez juste l'article que se trouve arbitrairement à la position N en ce moment alors vous pouvez utiliser ElementAt
:
string item = items.ElementAt(2).Value;
(notez qu'il n'y a aucune garantie que le même article sera trouvé dans la même position si vous exécutez le même code à nouveau, ou même si vous appelez ElementAt
deux fois en succession rapide.)
utilisant LINQ:
Dictionary<int, string> items = new Dictionary<int, string>();
items.add(2, "Bob");
items.add(5, "Joe");
items.add(9, "Eve");
string item = items.Items.Skip(1).First();
vous pouvez utiliser FirstOrDefault
au lieu de First
, selon ce que vous savez sur vos données.
aussi, soyez conscient que si le dictionnaire a besoin d'une commande pour ses articles (sinon il ne serait pas en mesure d'itérer au-dessus d'eux), cette commande est un simple FIFO (il ne pourrait pas être facilement n'importe quoi d'autre, puisque IDictionary
ne nécessite pas vos articles pour être IComparable
).
string item = items[items.Keys[1]];
cependant, soyez conscient qu'un dictionnaire n'est pas trié. Selon vos besoins, vous pouvez utiliser un SortedDictionary
.