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

你能不能把List<int>List<string>

我知道我可以循环和.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(); }); 

2010年更新

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

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

你不能直接强制转换,因为没有显式或隐式强制转换从int到string,它必须是涉及.ToString()的方法,例如: –

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

编辑 – 或者像其他人指出的那样出色,使用intList.ConvertAll(delegate(int i){return i.ToString();});,但是显然你仍然需要使用.ToString(),这是一个转换,而不是一个演员。

你必须build立一个新的列表。 List<int>List<string>的基本位表示是完全不兼容的,例如,在64位平台上,单个成员甚至不是相同的大小。

List<string>当作List<object>是理论上可行的 – 这可以让你进入令人兴奋的协变和逆变世界,而且目前还不被C#或VB.NET支持。

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

将参数result和listOfIntreplace为您的参数