Преобразовать все значения хеш-таблицы C# и ArrayList в строки
Мой ввод - это HashTable с целочисленными ключами и целочисленными значениями. Я хочу преобразовать все целочисленные значения в строковые значения. Таким образом, результатом будет HashTable целочисленных ключей и строковых значений.
Аналогично для ArrayLists. У меня есть ArrayList со всеми целыми числами, и я хочу, чтобы вывод был ArrayList всех строк.
Мой подход состоял в том, чтобы проходить и конвертировать каждую запись в Hashtable и ArrayList, но я чувствую, что есть более простой способ сделать это без циклов. Я думал что-то вроде использования LINQ?
ОБНОВИТЬ:
Если бы это зависело от меня, я бы вообще избегал HashTables и ArrayLists, но это уже другая история. Причина, по которой мне нужно преобразовать каждое значение в строку, заключается в том, что у меня есть сложный объект (Car), который содержит свойство Hashtable и свойство Arraylist. Значения Hashtable/Arraylist - это другие сложные объекты. Я отправляю объекты "Car" из клиентского приложения в WebAPI, поэтому "Car" преобразуется в JSON. Раздражает то, что я пытаюсь десериализовать "Автомобиль" из WebAPI. Все становится десериализованным, за исключением значений Hashtable/Arraylist. Значения все еще в формате JToken, и я должен был бы преобразовать их в строки один за другим через цикл.
1 ответ
Вы можете использовать LINQ, если вы в порядке, чтобы перейти от Hashtable
к Dictionary
и из ArrayList
к List
(что вы должны сделать в любом случае, так как вы упаковываете каждое значение в свой список хеш-таблиц и массивов):
Dictionary<int, string> dictionary = hashtable.Cast<DictionaryEntry>().ToDictionary(entry => (int)entry.Key, entry => entry.Value.ToString());
List<string> list = arrayList.Cast<int>().Select(value => value.ToString()).ToList();