У меня есть хэш-таблица со значениями, которые представляют собой сочетание объектов int и string (иногда строкового массива). Я хочу преобразовать их все в строки, но я не знаю простого способа сделать это без «перестройки» хэш-таблицы, конвертируя каждое значение в строку. Есть ли более простой и эффективный способ сделать это, не зацикливая значения?Преобразование значений Hashtable на месте
Вот простой пример. Это хэш, который я хотел бы преобразовать:
PS C:\Users\me> $test | Select -ExpandProperty Values | % { $_.GetType() }
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
True True String System.Object
True True String System.Object
True True Int32 System.ValueType
True True Int32 System.ValueType
True True Int32 System.ValueType
Для этого:
PS C:\Users\gross> $new_test | Select -ExpandProperty Values | % { $_.GetType() }
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
True True String System.Object
True True String System.Object
True True String System.Object
True True String System.Object
True True String System.Object
Я пробовал что-то подобное и получил «Произошла ошибка при перечислении через коллекцию: коллекция была изменена; операция перечисления не может выполняться. ', отсюда мой ответ. Я что-то пропустил? – briantist
Вам нужно развернуть ключи в подвыражении, чтобы отделить это от изменения хеш-таблицы. –
ahh получил. Я закончил создание нового массива окольным путем. Подвыражение намного чище. – briantist