Tratando de extraer una lista de teclas de un .NET Diccionario

La sospecha de que mi cerebro no está funcionando – necesito extraer una lista de claves, etc:

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

La segunda línea falla al compilar como las Llaves de la propiedad devuelve un “KeyCollection” de la clase y no una lista de<> de objetos clave.

OriginalEl autor winwaed | 2011-03-08

4 respuestas

  1. 30

    Mediante LINQ, puede hacer lo siguiente…

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

    Sin embargo, dependiendo de cuál es el objetivo con las teclas (selectivo enumeración etc) puede que tenga más sentido para el trabajo con la recogida de llaves y no convertir a una lista.

    Gracias – que es bastante ingeniosa: necesito conseguir la caída de Linq!
    Ah, así que lo que me faltaba era simplemente using System.Linq; no me acostumbro a todos estos métodos de extensión que de repente se muestran…

    OriginalEl autor Quintin Robinson

  2. 21

    KeyCollection implementa la IEnumerable interfaz.

    Puede utilizar un método de extensión para convertir a una lista.

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

    O utilizar otro constructor:

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

    OriginalEl autor Jaroslav Jandek

  3. 5

    Sí, usted puede intentar – IEnumerable<String> myKeys = myDict.Keys;

    Siempre es una buena idea utilizar IEnumerable (una más de tipo genérico).

    OriginalEl autor Kumar

  4. 2

    Si usted necesita un verdadero lista:

    List<string> myKeys = new List<string>(myDict.Keys);
    esto genera un error de tiempo de ejecución

    OriginalEl autor dsolimano

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *