Подтвердить что ты не робот

Преобразовать список (объекта) в список (строки)

Есть ли способ конвертировать List(of Object) в List(of String) в С# или vb.net без перебора всех элементов? (За кадром итерация в порядке - я просто хочу краткий код)

Обновление: лучший способ, вероятно, просто сделать новый выбор

myList.Select(function(i) i.ToString()).ToList();

или же

myList.Select(i => i.ToString()).ToList();
4b9b3361

Ответ 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

Можете ли вы выполнить преобразование строк при создании списка (объекта)? Это было бы единственным способом избежать перечисления всего списка после создания списка (объекта).