Список приведения <int>к списку <string>в .NET 2.0 - PullRequest
90 голосов
/ 05 сентября 2008

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

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

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

Ответы [ 7 ]

149 голосов
/ 05 сентября 2008

.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(); });
107 голосов
/ 03 марта 2010

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

List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
8 голосов
/ 05 сентября 2008

Может ли 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 Гленна, который, вероятно, является правильным кодом; -)

5 голосов
/ 02 марта 2013

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

List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();
5 голосов
/ 05 сентября 2008

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

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

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

1 голос
/ 07 июня 2017

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

замените результат параметров и listOfInt на ваши параметры

1 голос
/ 05 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...