Convierta el diccionario a la colección de listas en C #


93

Tengo un problema al intentar convertir un diccionario en una lista.

Ejemplo si tengo un diccionario con una cadena de plantilla como clave y una cadena como valor. Luego, deseo convertir la clave del diccionario en una colección de listas como una cadena.

Dictionary<string, string> dicNumber = new Dictionary<string, string>();
List<string> listNumber = new List<string>();

dicNumber.Add("1", "First");
dicNumber.Add("2", "Second");
dicNumber.Add("3", "Third");

// So the code may something look like this
//listNumber = dicNumber.Select(??????);

5
¿Estás pidiendo una lista de claves del diccionario? Si es así, hay una propiedad de claves en el diccionario que le dará eso.
Brian Rasmussen

Respuestas:


176

Para convertir las claves en una lista propia:

listNumber = dicNumber.Select(kvp => kvp.Key).ToList();

O puede acortarlo y ni siquiera molestarse con seleccionar:

listNumber = dicNumber.Keys.ToList();

@Brian: estaba llegando en mi edición. Quería mostrar el método de selección primero, ya que eso era lo que preguntó el OP y luego mostrar la alternativa. :-)
Justin Niessner

Así que pensé, así que eliminé mi comentario.
Brian Rasmussen

1
esto fue realmente útil. Necesitaba aplicar .Where (...) al dict antes de devolver las claves, pero ese método no devuelve un diccionario, por lo que no pude acceder a la propiedad Keys. usando esta selección después de donde funcionó muy bien
Martín Coll

22

Alternativamente:

var keys = new List<string>(dicNumber.Keys);

4
Trabajar con .NET Compact Framework 2.0 (por lo que no Linq) fue la mejor opción para mí.
Michael Murphy

Si no puede utilizar LINQ, esta opción parece la mejor.
user2000950

17

Si desea utilizar Linq, puede utilizar el siguiente fragmento:

var listNumber = dicNumber.Keys.ToList();

9

Si desea convertir claves:

List<string> listNumber = dicNumber.Keys.ToList();

de lo contrario, si desea convertir valores:

List<string> listNumber = dicNumber.Values.ToList();

Esto funcionará, pero puede que no esté en el orden esperado, incluso el dictado fue ordenado por claves antes, dict.Values ​​no es ...
BooNonMooN


3

Si desea pasar la colección de claves del diccionario a un argumento de método.

List<string> lstKeys = Dict.Keys;
Methodname(lstKeys);
-------------------
void MethodName(List<String> lstkeys)
{
    `enter code here`
    //Do ur task
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.