你能以某种方式投一个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(); });
类似的东西。
支持格伦的答案,这可能是正确的代码;-)
您可以使用:
List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();
您将无法直接转换它,因为从 int 到字符串不存在显式或隐式转换,它必须是涉及 .ToString() 的方法,例如:-
foreach (int i in intList) stringList.Add(i.ToString());
编辑- 或者正如其他人非常出色地指出的那样,使用 intList.ConvertAll(delegate(int i) { return i.ToString(); });,但显然你仍然必须使用 .ToString() 并且它是一种转换而不是演员表。
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
将参数 result 和 listOfInt 替换为您的参数
你必须建立一个新的列表。List<int>
和的底层位表示List<string>
完全不兼容——例如,在 64 位平台上,各个成员的大小甚至都不相同。
理论上可以将 aList<string>
视为 a List<object>
—— 这将带您进入令人兴奋的协变和逆变世界,目前 C# 或 VB.NET 不支持。
除了通常的 ToString() 之外,还可以通过两种额外的方式将 int List 转换为 string List。选择一个更让你满意的。
var stringlist = intlist.Select(x=>""+x).ToList();
或者还有:
var stringlist = intlist.Select(x=>$"{x}").ToList();
最后是传统的:
var stringlist = intlist.Select(x=>x.ToString()).ToList();