155 votes

Vérifiez si la clé existe dans NameValueCollection

Y a-t-il un moyen rapide et simple pour vérifier si une clé existe dans une NameValueCollection sans une boucle à travers elle ?

Vous cherchez quelque chose comme Dictionary.ContainsKey() ou similaire.

Il existe de nombreuses façons de résoudre ce problème bien sûr. Je me demandais si quelqu'un peut aider à gratter mes démangeaisons du cerveau.

201voto

abatishchev Points 42425

À partir de MSDN:

Cette propriété renvoie la valeur null dans les cas suivants:

1) si la clé n'est pas trouvée;

Donc, il vous suffit:

NameValueCollection collection = ...
string value = collection[key];
if (value == null) // key doesn't exist

2) si la clé spécifiée est trouvé et sa valeur est null.


collection[key] des appels base.Get() alors base.FindEntry() qui utilise en interne Hashtable avec des performances en O(1).

59voto

Kirill Polishchuk Points 28058

Utilisez cette méthode :

C’est le plus efficace pour et ne dépend pas de suite collection contient-elle valeurs ou pas.

16voto

ChaseMedallion Points 6064

Je ne pense pas que ces réponses sont tout à fait droite/optimale. NameValueCollection non seulement n’est pas distinguer les valeurs null et valeurs manquantes, il est également insensible à la casse en ce qui concerne ses clés. Ainsi, je pense qu’une solution complète serait :

14voto

rich.okelly Points 24144

Oui, vous pouvez utiliser Linq pour vérifier la `` propriété :

Cependant un `` serait beaucoup plus adapté à cette fin, peut-être créée via une méthode d’extension :

0voto

Codrin Eugeniu Points 1107

Vous pouvez utiliser le méthode et recherchez comme la méthode retourne `` si le NameValueCollection ne contient-elle pas la clé spécifiée.

Voir MSDN.

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