2011-03-08 12 views
15

sospecho que mi cerebro no está funcionando hoy - tengo que extraer una lista de claves, etc:tratar de extraer una lista de claves de un diccionario .NET

Dictionary<string, MyClass> myDict; 
List<String> myKeys = myDict.Keys; 

La segunda línea de falla al compilar como el La propiedad Keys devuelve una clase "KeyCollection" y no una lista <> de objetos clave.

+0

duplicado: http://stackoverflow.com/questions/1276763/how-do-i-get-the-list-of-keys-in A-dictionary –

Respuesta

26

mediante LINQ se puede hacer lo siguiente ...

List<String> myKeys = myDict.Keys.ToList(); 

Sin embargo, dependiendo de cuál es su meta con las teclas (enumeración selectiva, etc.) podría tener más sentido trabajar con la recogida de llaves y no convierte a una lista

+1

Gracias - eso es bastante ingenioso: ¡necesito aprender Linq! – winwaed

4

Sí, puede probar - IEnumerable<String> myKeys = myDict.Keys;

siempre una buena idea utilizar IEnumerable (un tipo más genérico).

1

Si necesita una verdadera lista:

List<string> myKeys = new List<string>(myDict.Keys); 
+1

esto genera un error de tiempo de ejecución – Smith

18

KeyCollection implementa la interfaz IEnumerable.

Puede usar un método de extensión para convertirlo en una lista.

List<String> myKeys = myDict.Keys.ToList(); 

O utilizar un constructor diferente:

List<String> myKeys = new List<String>(myDict.Keys); 
Cuestiones relacionadas