convert HashTable to Dictionary in C#

前端 未结 5 1793
闹比i
闹比i 2020-12-15 03:23

how to convert a HashTable to Dictionary in C#? is it possible? for example if I have collection of objects in HashTable and if I want to convert it to a dictionary of objec

相关标签:
5条回答
  • 2020-12-15 04:08

    also you can create an extension method for that

    Dictionary<KeyType, ItemType> d = new Dictionary<KeyType, ItemType>();
    foreach (var key in hashtable.Keys)
    {
     d.Add((KeyType)key, (ItemType)hashtable[key]);
    }
    
    0 讨论(0)
  • 2020-12-15 04:23
    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);
    
    0 讨论(0)
  • 2020-12-15 04:28
    public static Dictionary<K,V> HashtableToDictionary<K,V> (Hashtable table)
    {
       return table
         .Cast<DictionaryEntry> ()
         .ToDictionary (kvp => (K)kvp.Key, kvp => (V)kvp.Value);
    }
    
    0 讨论(0)
  • 2020-12-15 04:29

    Extension method version of agent-j's answer:

    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);
        }
    }
    
    0 讨论(0)
  • 2020-12-15 04:30
        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());
        }
    
    0 讨论(0)
提交回复
热议问题