在.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为您的参数