Можете ли вы нарисовать List<int>
по List<string>
как-нибудь?Список листинга <int> в список <string> в .NET 2.0
Я знаю, что я мог бы пройти через и .ToString() вещь, но отливка была бы потрясающей.
Я в C# 2.0 (так нет LINQ).
Можете ли вы нарисовать List<int>
по List<string>
как-нибудь?Список листинга <int> в список <string> в .NET 2.0
Я знаю, что я мог бы пройти через и .ToString() вещь, но отливка была бы потрясающей.
Я в C# 2.0 (так нет LINQ).
.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(); });
Is 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 Гленна, который, вероятно, правильный код ;-)
Вы должны построить новый список. Базовые представления бит List<int>
и List<string>
полностью несовместимы - например, на 64-битной платформе отдельные элементы не имеют одинакового размера.
Теоретически можно рассматривать List<string>
как List<object>
- это дает вам захватывающие миры ковариации и контравариантности и в настоящее время не поддерживается C# или VB.NET.
[@Curt] (http://stackoverflow.com/questions/44942/cast-listint-to-liststring#44950):> Теоретически можно обрабатывать > список
Вы не могли бы непосредственно бросьте, как не явно или неявно гипса существует из INT в строку, она будет иметь быть методом, включающий .ToString(), такие как: -
foreach (int i in intList) stringList.Add(i.ToString());
Редактировать - или как другие отметили довольно блестяще, используйте intList.ConvertAll (delegate (int i) {return i.ToString();}) ;, однако, очевидно, вам все равно придется использовать .ToString(), и это преобразование, а не бросок.
Существование броска между родовыми типами не имеет ничего общего с способностью броска между проекцией.IE, даже если `int` неявно или явно конвертируется в` string`, это не означает, что `List
обновлялись 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 });
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
Вы можете использовать:
List<int> items = new List<int>(new int[] { 1,2,3 });
List<string> s = (from i in items select i.ToString()).ToList();
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
замените результат параметров и listOfInt на ваши параметры
удивительный, спасибо. после нескольких часов болезненных поисков я пришел сюда! и работал как шарм! : D – iamserious 2010-07-15 10:33:00
Я согласен. Спасибо, что поделился! – Junto 2011-01-13 17:04:02