1. ホーム
  2. c#

c#でDictionary<string, object>をDictionary<string, string>に変換する方法

2023-09-19 07:59:48

質問

私はC#で以下のコードを持っています。

Dictionary<string, object> dObject = new Dictionary<string, object>();

を変換したい。 dObjectDictionary<string, string> . どうすればいいのでしょうか?

どのように解決するのですか?

ToDictionaryメソッドを使用します。

Dictionary<string, string> dString = dObject.ToDictionary(k => k.Key, k => k.Value.ToString());

ここでは、元の辞書のキーを再利用し、ToStringメソッドを用いて値を文字列に変換しています。

辞書にNULL値が含まれる可能性がある場合は、ToStringを実行する前にNULLチェックを追加する必要があります。

Dictionary<string, string> dString = dObject.ToDictionary(k => k.Key, k => k.Value == null ? "" : k.Value.ToString());

これがうまくいく理由は Dictionary<string, object> が実際には IEnumerable<KeyValuePair<string,object>> . 上記のコード例では、ToDictionaryメソッドを使用して列挙可能な項目を反復処理し、新しい辞書を構築しています。

編集してください。

.Net 2.0ではToDictionaryメソッドを使用できませんが、昔ながらのforeachを使用して同じことを実現することができます。

Dictionary<string, string> sd = new Dictionary<string, string>(); 
foreach (KeyValuePair<string, object> keyValuePair in dict)
{
  sd.Add(keyValuePair.Key, keyValuePair.Value.ToString());
}

編集2

.Net 2.0を使用していて、辞書にNULL値がある場合は、次のようにすると安全です。

Dictionary<string, string> sd = new Dictionary<string, string>(); 
foreach (KeyValuePair<string, object> keyValuePair in dict)
{
  sd.Add(keyValuePair.Key, keyValuePair.Value == null ? "" : keyValuePair.Value.ToString());
}