come convertire un HashTable in Dictionary in C#? È possibile? per esempio se ho una collezione di oggetti in HashTable e se voglio convertirlo in un dizionario di oggetti con un tipo specifico, come farlo?convertire HashTable in Dictionary in C#
risposta
public static Dictionary<K,V> HashtableToDictionary<K,V> (Hashtable table)
{
return table
.Cast<DictionaryEntry>()
.ToDictionary (kvp => (K)kvp.Key, kvp => (V)kvp.Value);
}
grazie per la risposta completa della conversione al dizionario e anche il casting della chiave e del valore per il tipo specificato. – RKP
var table = new Hashtable();
table.Add(1, "a");
table.Add(2, "b");
table.Add(3, "c");
var dict = table.Cast<DictionaryEntry>().ToDictionary(d => d.Key, d => d.Value);
, grazie per la soluzione che non richiede il looping, che è quello che stavo cercando. tuttavia ho accettato l'altra soluzione come risposta perché esegue il casting per correggere il tipo e ha un metodo di estensione definito per questo. il precedente restituisce il tipo di oggetto generico sia per la chiave che per il valore che non fornisce alcun vantaggio aggiuntivo rispetto a hashtable. – RKP
inoltre è possibile creare un metodo di estensione per quella
Dictionary<KeyType, ItemType> d = new Dictionary<KeyType, ItemType>();
foreach (var key in hashtable.Keys)
{
d.Add((KeyType)key, (ItemType)hashtable[key]);
}
Hashtable openWith = new Hashtable();
Dictionary<string, string> dictionary = new Dictionary<string, string>();
// Add some elements to the hash table. There are no
// duplicate keys, but some of the values are duplicates.
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");
foreach (string key in openWith.Keys)
{
dictionary.Add(key, openWith[key].ToString());
}
Estensione versione modalità di risposta dell'agente-j:
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public static class Extensions {
public static Dictionary<K,V> ToDictionary<K,V> (this Hashtable table)
{
return table
.Cast<DictionaryEntry>()
.ToDictionary (kvp => (K)kvp.Key, kvp => (V)kvp.Value);
}
}
- 1. Hashtable vs Dictionary
- 2. Dizionario/Oggetto HashTable in C++?
- 3. Come convertire il dizionario <> in Hashtable in C#?
- 4. Concurrent Dictionary in C#
- 5. Hashtable in C++?
- 6. come serializzare hashtable in C#
- 7. Come posso convertire correttamente un HashTable in JSON in PowerShell?
- 8. Come convertire un oggetto in Dictionary <TKey, TValue> in C#?
- 9. Che cos'è un esempio di implementazione di Hashtable in C#?
- 10. C# Dictionary, 2 Valori
- 11. Quale tipo di risoluzione collisione viene scelta per l'implementazione HashTable/Dictionary in .net?
- 12. Come convertire Dictionary <string, object> dizionario <string, string> in C#
- 13. Convertire Dictionary <string, string> al punto e virgola stringa separata in C#
- 14. C# Rilevazione AnonymousType new {nome = valore,} e convertire in Dictionary <string, object>
- 15. Quando utilizzare una HashTable
- 16. Differenza tra Dizionario e Hashtable
- 17. Implementazione di Hashtable per C
- 18. come convertire C# in C++
- 19. ConcurrentHashMap e Hashtable in Java
- 20. hashtable e sincronizzazione in Java
- 21. Pymongo Query with Dictionary inside Dictionary?
- 22. C# Dictionary <> e chiavi mutevoli
- 23. Iterating along a Dictionary in Swift 3
- 24. C# make a Dictionary of Lambdas
- 25. PSCustomObject a Hashtable
- 26. Come convertire TryCast in C#?
- 27. C# convertire system.IO.Stream in byte []
- 28. Rcpp map/dictionary/list
- 29. Strength of Dictionary in Tesseract 3
- 30. Swift Dictionary [String: String] in NSMutableDictionary?
Non si conosce il tipo di gli elementi 'Dictionary' in fase di compilazione o in fase di esecuzione? –
Tutti gli oggetti (chiavi e valori) del calcola HashTable su un tipo di target specifico che verrà utilizzato come parametro generico per il dizionario? O preferiresti piuttosto escludere quelli nell'HashTable che non sono del tipo appropriato? – daveaglick
Se possibile, si dovrebbe mettere l'oggetto in un 'dizionario' per iniziare. La classe 'HashTable' è praticamente obsoleta da quando è stato introdotto' Dictionary'. Dato che 'Dictionary' è il sostituto generico di' HashTable' il tuo codice avrebbe bisogno di piccoli aggiustamenti per usare invece un 'Dictionary'. – Guffa