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.