Estoy tratando de crear un diccionario a partir de 2 listas donde una lista contiene claves y una lista contiene valores. Puedo hacerlo usando for loop pero estoy tratando de encontrar si hay una manera de hacerlo usando LINQ. El código de muestra será útil. ¡¡¡¡Gracias!!!!crear un diccionario usando 2 listas usando LINQ
Respuesta
En .NET4 usted podría utilizar el incorporado en Zip
método para fusionar las dos secuencias, seguido de una llamada ToDictionary
:
var keys = new List<int> { 1, 2, 3 };
var values = new List<string> { "one", "two", "three" };
var dictionary = keys.Zip(values, (k, v) => new { Key = k, Value = v })
.ToDictionary(x => x.Key, x => x.Value);
List<string> keys = new List<string>();
List<string> values = new List<string>();
Dictionary<string, string> dict = keys.ToDictionary(x => x, x => values[keys.IndexOf(x)]);
Por supuesto, esto supone que la longitud de cada lista es la misma y que las claves son únicas.
ACTUALIZACIÓN:This answer es mucho más eficiente y se debe utilizar para listas de tamaño no trivial.
Puede incluir el índice en una expresión Select
Para que esto sea eficaz:
var a = new List<string>() { "A", "B", "C" };
var b = new List<string>() { "1", "2", "3" };
var c = a.Select((x, i) => new {key = x, value = b[i]}).ToDictionary(e => e.key, e => e.value);
foreach (var d in c)
Console.WriteLine(d.Key + " = " + d.Value);
Console.ReadKey();
Puede usar este código y funcionar perfectamente.
C# Código:
var keys = new List<string> { "Kalu", "Kishan", "Gourav" };
var values = new List<string> { "Singh", "Paneri", "Jain" };
Dictionary<string, string> dictionary = new Dictionary<string, string>();
for (int i = 0; i < keys.Count; i++)
{
dictionary.Add(keys[i].ToString(), values[i].ToString());
}
foreach (var data in dictionary)
{
Console.WriteLine("{0} {1}", data.Key, data.Value);
}
Console.ReadLine();
Salida de pantalla:
Una tarea demasiado engorrosa – netfed
var dic = keys.Zip(values, (k, v) => new { k, v })
.ToDictionary(x => x.k, x => x.v);
¿Esto realmente agrega algo a [LukeH] (http://stackoverflow.com/users/55847/lukeh) [respuesta de 5 años] (http://stackoverflow.com/a/ 2434647/215380)? – Rawling
- 1. ¿Cómo combinar 2 listas usando LINQ?
- 2. ¿Cómo ordenar simultáneamente 2 listas usando LINQ?
- 3. Validar 2 listas usando FluentValidation
- 4. ¿Cómo combinar dos listas usando LINQ?
- 5. Union A Lista de listas usando Linq
- 6. ¿Cómo creo un grupo anidado por diccionario usando LINQ?
- 7. actualizar 2 campos usando linq foreach
- 8. Obtenga la diferencia entre dos listas usando LINQ
- 9. La fusión de 2 Listas en LINQ
- 10. ¿Estoy usando listas correctamente?
- 11. Diferencia de dos listas con diferentes tipos usando LINQ
- 12. C# dictionary o simplemente sigue usando listas?
- 13. Crear un diccionario con una lista de listas en Python
- 14. Crear un diccionario en python indexado por listas
- 15. Diccionario usando genéricos
- 16. Python creando un diccionario de listas
- 17. ¿Cómo deserializar xml usando Linq?
- 18. cómo comparar 2 XML usando LINQ en C#
- 19. Creación de un diccionario simple usando WordNet
- 20. Producto cartesiano de un diccionario de listas
- 21. Listas de monitoreo usando LiveBindings
- 22. ¿Cómo convierto de un diccionario a un SortedDictionary usando LINQ en C#?
- 23. ¿Alguna mejor forma de convertir una matriz a un diccionario simultáneo usando linq o IEnumarable?
- 24. Python: ordenando un diccionario de listas
- 25. ¿Renderizar una jerarquía usando LINQ?
- 26. Agrupación usando LINQ
- 27. Clasificación topológica usando LINQ
- 28. Query JSON usando LINQ
- 29. Usando LINQ con NHibernate
- 30. Agrupar por hora usando LINQ
prefiero usar un bucle, en lugar de utilizar esto. Todavía +1 para la respuesta. – Steven
Eso fue todo. ¡¡¡Gracias!!! – VNarasimhaM
¿por qué usaría loops en lugar de LINQ? Pensé que este código es mucho más sucinta y legible que el ciclo for. – VNarasimhaM