如何將HashTable轉換爲C#中的字典?可能嗎?例如,如果我有HashTable中的對象集合,並且如果我想將它轉換爲具有特定類型的對象的字典,那麼該怎麼做?將HashTable轉換爲C#中的字典#
32
A
回答
53
public static Dictionary<K,V> HashtableToDictionary<K,V> (Hashtable table)
{
return table
.Cast<DictionaryEntry>()
.ToDictionary (kvp => (K)kvp.Key, kvp => (V)kvp.Value);
}
+0
感謝您轉換爲字典並將鍵和值轉換爲給定類型的完整答案。 – RKP
8
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);
+2
的遺留應用程序,謝謝你的解決方案,它不需要循環,這正是我正在尋找的。然而,我接受另一個解決方案作爲答案,因爲它會執行更正類型的轉換,併爲其定義擴展方法。上面的那個返回key和value的通用對象類型,這與hashtable沒有任何其他的優勢。 – RKP
3
你也可以創建代理-J的回答是
Dictionary<KeyType, ItemType> d = new Dictionary<KeyType, ItemType>();
foreach (var key in hashtable.Keys)
{
d.Add((KeyType)key, (ItemType)hashtable[key]);
}
0
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());
}
2
擴展方法版本的擴展方法:
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. VB.NET:將Hashtable轉換爲具有通用值類型的字典
- 2. 將Hashtable轉換爲System.Version
- 3. 將DataTable轉換爲字典C#
- 4. 將NetworkX MultiDiGraph轉換爲字典或從字典中轉換
- 5. 將字典列表轉換爲字典
- 6. 將字典轉換爲字典
- 7. 將字典輸入轉換爲字典
- 8. 將字典轉換爲ArrayList
- 9. 將字典轉換爲HashEntry
- 10. 將類轉換爲字典
- 11. 將字典轉換爲XML
- 12. 將字典轉換爲OrderedDict
- 13. 將jSon轉換爲字典
- 14. 將字典轉換爲JSOn
- 15. 字典/ C++中的HashTable對象?
- 16. 將Json轉換爲Python中的字典
- 17. 如何將列表<object>轉換爲C#中的Hashtable?
- 18. 在Python中將字典轉換爲JSON
- 19. 在swift2中將NSDictionary轉換爲字典
- 20. C#字符串轉換爲字典
- 21. 如何在C#中將Dictionary <>轉換爲Hashtable?
- 22. 如何將csv轉換爲Python中字典的字典?
- 23. 將列表轉換爲Python中的字典字典
- 24. 如何將數組轉換爲字典中的目標c
- 25. 將字典轉換爲C#中的列表集合
- 26. 如何使用C#中的LINQ將字典轉換爲SortedDictionary?
- 27. 如何將一列列表轉換爲C#中的字典?
- 28. 將Hashtable轉換爲對象列表
- 29. 如何將NameValueCollection轉換爲Hashtable
- 30. 將F#映射轉換爲Hashtable
你知道的類型編譯時或運行時的'Dictionary'元素? –
HashTable的所有對象(鍵和值)都可以轉換爲將用作Dictionary的通用參數的特定目標類型?或者你是否願意排除HashTable中不適合的類型? – daveaglick
如果可能的話,你應該把對象放在一個'Dictionary'開始。 'HashTable'類自從引入'Dictionary'後實際上已經過時了。由於'Dictionary'是'HashTable'的通用替代品,因此代碼需要稍微調整以使用'Dictionary'代替。 – Guffa