Приведение списка <int> в список <string> в .NET 2.0

c# generics casting

74150 просмотра

7 ответа

Вы можете бросить , List<int>чтобы List<string>каким - то образом?

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

Я в C # 2.0 (поэтому нет LINQ ).

Автор: lomaxx Источник Размещён: 16.08.2019 05:28

Ответы (7)


151 плюса

Решение

В .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(); });
Автор: Glenn Slaven Размещён: 04.09.2008 11:16

111 плюса

Обновлено на 2010

List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
Автор: Luke Размещён: 02.03.2010 10:09

8 плюса

C # 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(); });

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


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

Автор: Erik van Brakel Размещён: 04.09.2008 11:11

5 плюса

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

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

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

Автор: ljs Размещён: 04.09.2008 11:14

5 плюса

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

List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();
Автор: lutecki Размещён: 02.03.2013 06:33

1 плюс

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

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

Автор: Curt Hagenlocher Размещён: 04.09.2008 11:12

1 плюс

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

замените параметры result и listOfInt на ваши параметры

Автор: Jayant Rajwani Размещён: 07.06.2017 10:03
32x32