ハッシュテーブルをC#で辞書に変換する方法は?出来ますか?例えば、私が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
私は何を探していたかのループを必要としないソリューションに感謝します。しかし、私は他の解決策を回答として受け入れました。なぜなら、タイプを修正するためのキャストを行い、拡張メソッドが定義されているからです。上記のものは、キーと値の両方に対して汎用オブジェクト型を返します。これはハッシュテーブルよりも利点がありません。 – 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. DataTableを辞書Cに変換する#
- 2. 変換JSON辞書のC#
- 3. 辞書をpythonで辞書に変換するには?
- 4. 山車を使用するハッシュテーブル/辞書/
- 5. 変換辞書
- 6. 変換辞書
- 7. csvをPythonの辞書の辞書に変換するには?
- 8. C#からJSONへの変換、辞書
- 9. 辞書のリストを辞書のセットに変換する
- 10. リストの辞書をタプルの辞書に変換する
- 11. 配列辞書を辞書に変換するpython
- 12. 辞書の辞書をDataFrame Pythonに変換する
- 13. 辞書のリストを1つの辞書に変換する
- 14. 辞書のリストを辞書の別のリストに変換する
- 15. パンダのデータフレームを辞書の辞書に変換する
- 16. Python辞書をJavaScriptのハッシュテーブルに変換するにはどうすればよいですか?
- 17. LINQ辞書をルックアップに変換する
- 18. データフレームを辞書に変換する
- 19. Python:Cyclical辞書をJSONに変換する
- 20. 辞書をCSVファイルに変換する
- 21. ファイルを辞書に変換する
- 22. ユニコードを辞書に変換する
- 23. 辞書をリストに変換する
- 24. テキストファイルを辞書に変換する
- 25. 辞書をカスタムタイプに変換する
- 26. JSONデータを辞書に変換する
- 27. IDictionaryを辞書に変換する
- 28. jSonを辞書に変換する
- 29. jsonをPython辞書に変換する
- 30. 辞書にCSVファイルを変換する
あなたはのタイプを知っていますかコンパイル時や実行時の 'Dictionary'要素は? –
HashTableキャスト可能オブジェクトのすべてのオブジェクト(キーと値)は、ディクショナリの汎用パラメータとして使用される特定のターゲットタイプですか?あるいは、適切なタイプではないものをHashTableで除外しますか? – daveaglick
可能であれば、オブジェクトを 'Dictionary'に入れて始めましょう。 'Dictionary 'が導入されて以来、' HashTable'クラスは実質的に廃止されています。 'Dictionary'は' HashTable'の一般的な置き換えであるため、あなたのコードでは代わりに 'Dictionary'を使用するための小さな調整が必要です。 – Guffa