98

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

我知道我可以遍历和 .ToString() 的东西,但演员会很棒。

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

4

8 回答 8

153

.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(); });
于 2008-09-04T23:16:00.050 回答
121

2010 年更新

List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
于 2010-03-02T22:09:43.563 回答
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(); });

类似的东西。


支持格伦的答案,这可能是正确的代码;-)

于 2008-09-04T23:11:57.640 回答
7

您可以使用:

List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();
于 2013-03-02T18:33:26.220 回答
5

您将无法直接转换它,因为从 int 到字符串不存在显式或隐式转换,它必须是涉及 .ToString() 的方法,例如:-

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

编辑- 或者正如其他人非常出色地指出的那样,使用 intList.ConvertAll(delegate(int i) { return i.ToString(); });,但显然你仍然必须使用 .ToString() 并且它是一种转换而不是演员表。

于 2008-09-04T23:14:15.110 回答
2

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

将参数 result 和 listOfInt 替换为您的参数

于 2017-06-07T10:03:09.993 回答
1

你必须建立一个新的列表。List<int>和的底层位表示List<string>完全不兼容——例如,在 64 位平台上,各个成员的大小甚至都不相同。

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

于 2008-09-04T23:12:16.237 回答
1

除了通常的 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();
于 2020-09-18T00:24:26.193 回答