59 votes

Dictionary.FirstOrDefault() comment faire pour déterminer si un résultat a été trouvé

J’ai (ou je voulais avoir) du code comme celui-ci :

J’ai également essayé de changer la ligne incriminée comme ceci:

Mais cela donne également une erreur de compilation:

Qu’est-ce qui donne ici?

57voto

Jon Skeet Points 692016

La réponse de Jon fonctionnera avec , car cela ne peut pas avoir une valeur de clé null dans le dictionnaire. Cela ne fonctionnerait pas avec , cependant, car cela ne représente pas une valeur de clé nulle... le mode « échec » se retrouverait avec une touche de 0.

Deux options :

Écrivez une `` méthode, comme celle-ci :

Vous pouvez également projeter vers un type nullable :

8voto

Emerson Cardoso Points 324

Quels que soient les types de clé et de valeur, vous pouvez faire quelque chose comme ceci:

4voto

Le code le plus clair que je pense est le ceci:

Bien que du point de vue de la vitesse, ce n’est pas agréable, mais il n’y a pas de meilleure solution. Cela signifie que le dictionnaire sera recherché avec une recherche lente une deuxième fois. La classe Dictionary doit être améliorée en proposant une méthode 'bool TryGetKey(value)'. Cela semble un peu étrange - parce qu’on pense qu’un dictionnaire est utilisé dans l’autre sens - mais parfois il est inévitable de traduire à l’envers.

0voto

Yusuf Demirag Points 743

pour les types de valeur nullables, il suffit de vérifier.

pour les types non nullables, vérifiez la valeur par défaut de againts, pour int, 0.

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