Преобразовать список (объекта) в список (строки)
Есть ли способ конвертировать List(of Object)
в List(of String)
в С# или vb.net без перебора всех элементов? (За кадром итерация в порядке - я просто хочу краткий код)
Обновление: лучший способ, вероятно, просто сделать новый выбор
myList.Select(function(i) i.ToString()).ToList();
или же
myList.Select(i => i.ToString()).ToList();
Ответы
Ответ 1
Невозможно без необходимости создания нового списка. Вы можете обернуть список в контейнер, который реализует IList.
Вы можете использовать LINQ для получения ленивой оценочной версии IEnumerable<string>
из списка объектов, например:
var stringList = myList.OfType<string>();
Ответ 2
Это работает для всех типов.
List<object> objects = new List<object>();
List<string> strings = objects.Select(s => (string)s).ToList();
Ответ 3
Если вам нужен больше контроля над тем, как происходит преобразование, вы можете использовать ConvertAll:
var stringList = myList.ConvertAll(obj => obj.SomeToStringMethod());
Ответ 4
Вы имеете в виду что-то вроде этого?
List<object> objects = new List<object>();
var strings = (from o in objects
select o.ToString()).ToList();
Ответ 5
Нет - если вы хотите преобразовать ВСЕ элементы списка, вам придется коснуться ВСЕХ элементов этого списка так или иначе.
Вы можете указать/записать итерацию по-разному (foreach()...... или .ConvertAll() или что-то еще), но, в конце концов, так или иначе, некоторый код будет итератировать каждый элемент и преобразовать его.
Марк
Ответ 6
Можете ли вы выполнить преобразование строк при создании списка (объекта)? Это было бы единственным способом избежать перечисления всего списка после создания списка (объекта).