Список Cast <int> для отображения <string> в .NET 2.0

Можете ли вы каким-то образом отложить List<int> до List<string>?

Я знаю, что я мог бы перебирать и .ToString() вещь, но приведение было бы потрясающим.

Я в С# 2.0 (так что LINQ).

Ответ 1

В .NET 2.0 есть метод ConvertAll, в котором вы можете передать функцию конвертера:

List<int>    l1 = new List<int>(new int[] { 1, 2, 3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });

Ответ 2

Обновлено за 2010 год

List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());

Ответ 3

Можно ли С# 2.0 выполнить List<T>.Convert? Если это так, я думаю, ваше лучшее предположение было бы использовать это с делегатом:

List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });

Что-то в этом роде.


Ответ Upnote Glenn, который, вероятно, является правильным кодом; -)

Ответ 4

Вы не сможете напрямую использовать его, поскольку явный или неявный листинг существует из int в строку, это должен быть метод, включающий .ToString(), например: -

foreach (int i in intList) stringList.Add(i.ToString());

Изменить - или, как другие отметили довольно блестяще, используйте intList.ConvertAll(delegate (int i) {return i.ToString();}); однако, тем не менее, вам все равно придется использовать .ToString() и это преобразование, а не литье.

Ответ 5

Вы можете использовать:

List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();

Ответ 6

Вам нужно создать новый список. Базовые представления бит List<int> и List<string> полностью несовместимы - на 64-битной платформе, например, отдельные члены не имеют одинакового размера.

Теоретически можно рассматривать a List<string> как a List<object> - это приводит вас в захватывающие миры ковариации и контравариантности и в настоящее время не поддерживается С# или VB.NET.

Ответ 7

result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()

заменить параметры и listOfInt на параметры