【发布时间】:2011-08-01 19:31:36
【问题描述】:
我有一个NameValueCollection 对象,我需要将它转换为Hashtable 对象,最好是在一行代码中。我怎样才能做到这一点?
【问题讨论】:
我有一个NameValueCollection 对象,我需要将它转换为Hashtable 对象,最好是在一行代码中。我怎样才能做到这一点?
【问题讨论】:
您应该考虑使用通用的Dictionary,因为它是强类型的,而Hashtable 不是。试试这个:
NameValueCollection col = new NameValueCollection();
col.Add("red", "rouge");
col.Add("green", "verde");
col.Add("blue", "azul");
var dict = col.AllKeys
.ToDictionary(k => k, k => col[k]);
编辑:根据您的评论,要获得 HashTable,您仍然可以使用上述方法并再添加一行。您总是可以在一行中完成这项工作,但两行更具可读性。
Hashtable hashTable = new Hashtable(dict);
或者,使用循环的 pre-.NET 3.5 方法是:
Hashtable hashTable = new Hashtable();
foreach (string key in col)
{
hashTable.Add(key, col[key]);
}
【讨论】:
Hashtable 所以不能使用 Dictionary...
它需要不止一行,但它非常简单
NameValueCollection nv = new NameValueCollection();
Hashtable hashTable = new Hashtable();
nv.Add("test", "test");
foreach (string key in nv.Keys)
{
hashTable.Add(key, nv[key]);
}
它按预期编译和执行。
【讨论】: