答案 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();