Sto tentando di creare un dizionario da 2 elenchi in cui un elenco contiene chiavi e un elenco contiene valori. Posso farlo usando il ciclo for ma sto cercando di scoprire se c'è un modo per farlo usando LINQ. Il codice di esempio sarà utile. Grazie!!!!creare un dizionario utilizzando 2 elenchi utilizzando LINQ
risposta
In .NET4 è possibile utilizzare il built-in Zip
metodo per unire le due sequenze, seguiti da una chiamata 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)]);
Questo naturalmente presuppone che la lunghezza di ciascuna lista sia la stessa e che i tasti siano unici.
UPDATE:This answer è molto più efficiente e deve essere utilizzato per elenchi di dimensioni non banali.
È possibile includere l'indice in un'espressione Select
per rendere questo efficace:
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();
È possibile utilizzare questo codice e funziona perfettamente.
C# Codice:
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();
Output su schermo:
Un'attività troppo ingombrante – netfed
var dic = keys.Zip(values, (k, v) => new { k, v })
.ToDictionary(x => x.k, x => x.v);
Questo aggiunge davvero qualcosa alla [LukeH] (http://stackoverflow.com/users/55847/lukeh)? [Risposta di 5 anni] (http://stackoverflow.com/a/ 2434647/215380)? – Rawling
- 1. Come ordinare contemporaneamente 2 elenchi utilizzando LINQ?
- 2. popolano un dizionario utilizzando LINQ
- 3. Unisci 2 array utilizzando LINQ
- 4. Ottieni la differenza tra due elenchi utilizzando LINQ
- 5. Come posso filtrare un dizionario utilizzando LINQ e restituirlo a un dizionario dallo stesso tipo
- 6. Come posso creare un dizionario di gruppo annidato usando LINQ?
- 7. Implementare dizionario utilizzando Java
- 8. Differenza di due elenchi con tipi diversi utilizzando LINQ
- 9. Creazione di un dizionario ordinato utilizzando ToDictionary
- 10. Monitoraggio elenchi utilizzando LiveBindings
- 11. Dizionario di elenchi
- 12. dividere un elenco utilizzando LINQ
- 13. Creare un dizionario in python che è indicizzato dagli elenchi
- 14. Python - dizionario degli elenchi
- 15. Convertire il dizionario <String,Int> nel dizionario <String, SomeEnum> utilizzando LINQ?
- 16. interrogazione xmlnode utilizzando LINQ
- 17. Permutazioni di scala utilizzando due elenchi
- 18. Ordinamento del dizionario utilizzando operator.itemgetter
- 19. topologico Ordinamento utilizzando LINQ
- 20. Do List.Exist utilizzando Linq
- 21. Ottieni media utilizzando LINQ
- 22. Raggruppamento utilizzando LINQ
- 23. Più SUM utilizzando LINQ
- 24. utilizzando LINQ con join utilizzando due dove su due tavoli
- 25. Ottenere un valore del dizionario utilizzando Reflection
- 26. Ottieni valore dalla chiave utilizzando linq
- 27. Raggruppamento per ora utilizzando LINQ
- 28. Raggruppa per intervallo utilizzando linq
- 29. modo migliore per ordinare un dizionario in gruppi utilizzando Python
- 30. Creare un commit utilizzando pygit2
Preferisco utilizzare un ciclo, invece di utilizzare questo. Ancora +1 per la risposta. – Steven
Era così. Grazie!!! – VNarasimhaM
perché dovresti usare loops al posto di LINQ? Ho pensato che questo codice sia molto più succinto e leggibile rispetto al ciclo for. – VNarasimhaM