どうすればaをに変換できDictionary<string, string>
ますNameValueCollection
か?
NameValueCollection
私たちのプロジェクトの既存の機能は、LINQで変更した昔ながらの機能を返します。結果はとして渡される必要がありNameValueCollection
ます。
これを一般的な方法で解決したいと思います。ヒントはありますか?
どうすればaをに変換できDictionary<string, string>
ますNameValueCollection
か?
NameValueCollection
私たちのプロジェクトの既存の機能は、LINQで変更した昔ながらの機能を返します。結果はとして渡される必要がありNameValueCollection
ます。
これを一般的な方法で解決したいと思います。ヒントはありますか?
単純なforeach
ループを使用してみませんか?
foreach(var kvp in dict)
{
nameValueCollection.Add(kvp.Key.ToString(), kvp.Value.ToString());
}
これは、拡張メソッドに埋め込むことができます。
public static NameValueCollection ToNameValueCollection<TKey, TValue>(
this IDictionary<TKey, TValue> dict)
{
var nameValueCollection = new NameValueCollection();
foreach(var kvp in dict)
{
string value = null;
if(kvp.Value != null)
value = kvp.Value.ToString();
nameValueCollection.Add(kvp.Key.ToString(), value);
}
return nameValueCollection;
}
次に、次のように呼び出すことができます。
var nameValueCollection = dict.ToNameValueCollection();
そして、LINQが好きなら:
return dictionary.Aggregate(new NameValueCollection(),
(seed, current) => {
seed.Add(current.Key, current.Value);
return seed;
});
(ソース)
return source.Cast<string>()
.ToDictionary(s => s, s => source[s]);
この辞書拡張機能を試してみてください。あなたが望んでいたものだといいのですが。
public static class DictionaryExtensions
{
public static NameValueCollection ToNameValueCollection<tValue>(this IDictionary<string, tValue> dictionary)
{
var collection = new NameValueCollection();
foreach(var pair in dictionary)
collection.Add(pair.Key, pair.Value.ToString());
return collection;
}
}
のように使用
var nvc = myDict.ToNameValueCollection();
注:過度に一般化したくなかったため、キーを文字列に制限しました。もちろん、これはジェネリック型とキーの.ToString()で変更できます。