У меня есть объект NameValueCollection
, и мне нужно преобразовать его в объект Hashtable
, предпочтительно в одной строке кода. Как я могу достичь этого?
Как преобразовать NameValueCollection в Hashtable
Ответ 1
Вместо этого вы должны использовать общий 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]);
EDIT:. На основе вашего комментария, чтобы получить HashTable, вы все равно можете использовать вышеупомянутый подход и добавить еще одну строку. Вы всегда можете сделать эту работу в одной строке, но 2 строки более читабельны.
Hashtable hashTable = new Hashtable(dict);
Альтернативно, подход pre-.NET 3.5 с использованием цикла:
Hashtable hashTable = new Hashtable();
foreach (string key in col)
{
hashTable.Add(key, col[key]);
}
Ответ 2
Требуется несколько строк, но это довольно просто
NameValueCollection nv = new NameValueCollection();
Hashtable hashTable = new Hashtable();
nv.Add("test", "test");
foreach (string key in nv.Keys)
{
hashTable.Add(key, nv[key]);
}
Он компилируется и выполняется, как ожидалось.