2011-03-03 17 views
24

I comprobando si tenemos alguna forma de devolver todas las claves a la matriz sin usar el para cada ciclo (no hay restricción para yo use para cada lazo estoy buscando ¿hay alguna otra manera)Cómo obtener todas las claves (solo las claves) del objeto del diccionario sin pasar por cada ciclo

Gracias de antemano

+2

consulte [how-to-get-the-list-of-key-in-dictionary-c-sharp] (http://stackoverflow.com/questions/1276763/how-to-get-the-list -of-key-in-dictionary-c-sharp? rq = 1) – nawfal

Respuesta

55

no estoy seguro de su redacción si desea que las claves o los valores. De cualquier manera, es bastante sencillo. Utilice la propiedad Keys o Values del diccionario y el método de extensión ToArray.

var arrayOfAllKeys = yourDictionary.Keys.ToArray(); 

var arrayOfAllValues = yourDictionary.Values.ToArray(); 
+0

hm ... No funciona para mí - System.Collections.Generic.Dictionary .KeyCollection 'no contiene una definición para 'ToArray' y no se puede encontrar ningún método de extensión 'ToArray' que acepte un primer argumento de tipo 'System.Collections.Generic.Dictionary .KeyCollection' (¿falta una directiva using o una referencia de ensamblado?) –

+5

@Chiz: 'ToArray' es un método de extensión LINQ, por lo que necesitarás una directiva' using System.Linq; 'en la parte superior de tu código. – LukeH

1
string[] myKeys; 
myKeys = myDictionary.Keys.ToArray(); 

no probado, pero no veo por qué iba a funcionar.

+0

Este código: 'var arrayOfAllKeys = yourDictionary.Keys.ToArray();' Publicado por LukeH es mejor, porque este código es cada vez menos comprensible. y valor accesible a través del código: 'arrayOfAllKeys. [0] .ToString();' gracias. –

3

¿Desea las claves o los valores?

Las teclas que se puede obtener como esto:

dictionary.Keys.ToArray(); 

Los valores que se pueden obtener como esto;

dictionary.Values.ToArray(); 

Este método ToArray es de System.Linq.Enumerable.

Cuestiones relacionadas