166 votes

Accéder à une clé Dictionary.Keys via un index numérique

Je suis à l'aide d'un Dictionary<string, int> où l'int est un nombre de la clé.

Maintenant, j'ai besoin d'accéder à la dernière place de la Clé à l'intérieur du Dictionnaire, mais je ne sais pas le nom de celui-ci. La tentative évidente:

int LastCount = mydict[mydict.keys[mydict.keys.Count]];

ne fonctionne pas, car le Dictionnaire.Les clés de ne pas mettre en œuvre un []-indexeur.

Je me demande juste si il n'y a aucune catégorie similaire? J'ai pensé à utiliser une Pile, mais qui n'en garde qu'une chaîne de caractères. Je pouvais maintenant créer ma propre structure et ensuite utiliser un Stack<MyStruct>, mais je me demande si il y a une autre alternative, qui est essentiellement un Dictionnaire qui met en œuvre un []-indexer sur les Touches?

231voto

Vitor Hugo Points 919

C'est très simple. Mais vous devez utiliser linq.

 int LastCount = mydict.Keys.ElementAt(mydict.Count -1);
 

59voto

Andrew Peters Points 6012

Vous pouvez utiliser un OrderedDictionary .

Représente une collection de paires clé / valeur accessibles par la clé ou l'index.

8voto

Calanus Points 6164

Pourquoi ne pas simplement étendre la classe de dictionnaire pour ajouter une dernière propriété insérée de clé. Quelque chose comme ce qui suit peut-être?

 public class ExtendedDictionary : Dictionary<string, int>
{
    private int lastKeyInserted = -1;

    public int LastKeyInserted
    {
        get { return lastKeyInserted; }
        set { lastKeyInserted = value; }
    }

    public void AddNew(string s, int i)
    {
        lastKeyInserted = i;

        base.Add(s, i);
    }
}
 

6voto

Patrick Points 20392

Vous pouvez toujours le faire:

string[] temp = new string[mydict.count];

Mais je ne le recommande pas. Il n'y a aucune garantie que la dernière inséré la clé sera à la fin du tableau. La commande de Clés sur MSDN est pas spécifié, et sous réserve de modification. Dans mon très bref test, il ne semble pas être dans l'ordre d'insertion, mais vous seriez mieux de construction dans la bonne tenue de la comptabilité comme une pile--comme vous le suggérez, (même si je ne vois pas la nécessité d'une structure en fonction de vos autres états)--ou variable unique de cache si vous avez juste besoin de connaître la dernière clé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X