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(??????);
Edy Cu
fuente
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();
Justin Niessner
fuente
@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);
stuartd
fuente
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();
Pop Catalin
fuente
9

Si desea convertir claves:

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

de lo contrario, si desea convertir valores:

List<string> listNumber = dicNumber.Values.ToList();
daniele3004
fuente
Esto funcionará, pero puede que no esté en el orden esperado, incluso el dictado fue ordenado por claves antes, dict.Values ​​no es ...
BooNonMooN
4
foreach (var item in dicNumber)
{
    listnumber.Add(item.Key);
}
explorador
fuente
Por qué no al final :)
Arman McHitarian
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
}
arun
fuente