Je déclare le dictionnaire comme suit: et j'ai utilisé comme suivant: p> Donc, le touchdimant gardera la clé de TouchID. Maintenant, j'essaie de trouver la clé minimale à l'aide du dictionnaire, mais je ne sais pas comment faire. Avoir une suggestion? P> considération,
C.porawat p> p> touchddiction [touchid] code> = TouchObject; P >
3 Réponses :
Dictionnaire a une propriété de clés qui vous permet d'énumérer les clés dans le dictionnaire. Vous pouvez utiliser les méthodes d'extension MIN LINQ pour obtenir la clé minimale comme suit:
int minimumKey = touchDictionary.Keys.Min();
Et malheureusement, la fonction est une opération O (n). Vous n'obtenez aucun des avantages d'avoir un dictionnaire ici.
Peut-être envelopper votre dictionnaire dans une classe qui peut conserver une trace de la clé min utilisée pour faire des entrées?
Il n'y a rien dans la question initiale qui indique qu'il s'agit d'une opération sensible aux performances!
Merci beaucoup pour votre suggestion
quelque chose comme touchdictionary.keys.min () code>. Assurez-vous simplement d'importer le System.LINQ code> Espace de noms. P>
Il y a une bonne réponse interne ce post sur SO: P>
Comment triez-vous un dictionnaire en valeur? p>
Vous auriez juste besoin de trier par clé à la place p>
Pourriez-vous expliquer votre cas d'utilisation ici? Quel est l'avantage de connaître la Min?
Une autre façon de faire cela est de stocker la valeur minimale "actuelle" et sur chaque ajout / supprimer du dictionnaire, vérifiez-le et mettre à jour si nécessaire. Ça va arrêter l'énumération des clés.
Avez-vous envisagé si un
sortidlist <,> code> outrioddiction <,> code> est un meilleur ajustement pour votre collection? msdn.microsoft.com/en-us/library/5z658b67.aspxJ'essaie de vérifier la valeur booléenne dans tous les objectifs du dictionnaire.