在C#中将嵌套的HashTable转换为嵌套的Dictionary

时间:2019-02-07 10:38:55

标签: dictionary nested hashtable typed

是否有一种优雅的方法将嵌套的HashTable转换为嵌套和键入的Dictionary?

我通过在复制表时强制转换类型,将嵌套的HashTable转换为类型化和嵌套的Dictionary:

var hashtable = GetHashTable();

var dic = new Dictionary<UnitType, IEnumerable<ImprovementData>>();
foreach (var unit in hashtable)
{
     var improvements = new List<ImprovementData>();
     foreach (var improvement in (Hashtable) unit.Value)
     {
          improvements.Add(new ImprovementData()
          {                                                          
               Type = (PropertyType) improvement.Key,               
               Value = (float) improvement.Value                      
          });
     }

     dic.Add((UnitType) unit.Key, improvements);
}

我尝试过类似的事情:

public static Dictionary<K,V> HashtableToDictionary<K,V> (Hashtable table)
{
   return table
     .Cast<DictionaryEntry> ()
     .ToDictionary (kvp => (K)kvp.Key, kvp => (V)kvp.Value);
}

但是我不知道如何处理嵌套部分!

0 个答案:

没有答案