在.NET 2.0中将List <int>转换为List <string> </string> </int>

时间:2008-09-04 23:06:56

标签: c# generics casting

你能以某种方式将List<int>投射到List<string>吗?

我知道我可以循环使用.ToString()这个东西,但是演员阵容会非常棒。

我在C#2.0(所以没有LINQ)。

8 个答案:

答案 0 :(得分:149)

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

答案 1 :(得分:107)

2010年更新

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

答案 2 :(得分: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 Glenn的答案,这可能是正确的代码; - )

答案 3 :(得分:5)

你无法直接转换它,因为从int到string不存在显式或隐式转换,它会作为涉及.ToString()的方法,例如: -

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

编辑 - 或正如其他人指出的那样,使用intList.ConvertAll(delegate(int i){return i.ToString();});但是很明显你仍然需要使用.ToString(),它是转换而不是转换。

答案 4 :(得分:5)

您可以使用:

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

答案 5 :(得分:1)

您必须构建一个新列表。 List<int>List<string>的基础位表示完全不兼容 - 例如,在64位平台上,单个成员的大小不同。

理论上可以将List<string>视为List<object> - 这可以让您进入令人兴奋的协方差和逆变世界,目前C#或VB.NET不支持。

答案 6 :(得分:1)

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

将参数result和listOfInt替换为参数

答案 7 :(得分:0)

从int List到字符串List的转换除了通常的ToString()以外,还可以通过两种附加方式完成。选择一种更让您满意的食物。

var stringlist = intlist.Select(x=>""+x).ToList();

或者:

var stringlist = intlist.Select(x=>$"{x}").ToList();

最后是传统的:

var stringlist = intlist.Select(x=>x.ToString()).ToList();