2016-12-27 7 views
-1

Мой вход - это HashTable с целыми и целочисленными значениями. Я хочу преобразовать все целочисленные значения в строковые значения. Таким образом, вывод будет HashTable целых ключей и строковых значений.Преобразование всех значений Hashtable C# и значений ArrayList в строки

Аналогично для ArrayLists. У меня есть ArrayList со всеми целыми числами, и я хочу, чтобы результат был ArrayList всех строк.

Мой подход состоял в том, чтобы перебирать и преобразовывать каждую запись в Hashtable и ArrayList, но я чувствую, что есть простой способ сделать это без циклов. Я думал что-то вроде линии LINQ?

UPDATE:

Если бы это было до меня, я бы избежать HashTables и ArrayLists вообще лол, но это уже совсем другая история. Причина, по которой мне нужно преобразовать каждое значение в строку, состоит в том, что у меня есть сложный объект (Car), который содержит свойство Hashtable и свойство Arraylist. Значения Hashtable/Arraylist - это другие сложные объекты. Я отправляю объекты «Автомобиль» из клиентского приложения в WebAPI, поэтому «Автомобиль» преобразуется в JSON. Досадно, когда я пытаюсь десериализовать «Автомобиль» из WebAPI. Все десериализуется, за исключением значений Hashtable/Arraylist. Значения все еще находятся в формате JToken, и мне пришлось бы преобразовывать их в строки один за другим через цикл.

+1

У вас есть какие-либо доказательства вашей попытки, почему бы вам не указать тип данных в соответствии с вашим требованием вместо этого преобразования? Я имею в виду «HashTable» целых ключей и строковых значений? –

+0

http://stackoverflow.com/questions/37298121/copying-list-to-new-list-still-change-the-old-lists-value –

+0

Там нет простого способа без цикла. В любом случае вам нужно все петли. Даже с LINQ. Вам нужно создать новые экземпляры 'Hashtable ' и' ArrayList ' – Fabio

ответ

2

Вы можете использовать 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();