c# - 在.NET 2.0中将List <int>转换为List <string>

你能以某种方式投射List<int>List<string>吗?

我知道我可以遍历和.ToString()这个东西,但是演员阵容会很棒。

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

lomaxx asked 2019-08-13T15:33:45Z
7个解决方案
147 votes

.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(); });
Glenn Slaven answered 2019-08-13T15:34:04Z
107 votes

2010年更新

List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
Luke answered 2019-08-13T15:34:30Z
8 votes

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的答案,这可能是正确的代码;-)

Erik van Brakel answered 2019-08-13T15:35:09Z
5 votes

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

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

编辑 - 或正如其他人已经指出的那样,使用intList.ConvertAll(delegate(int i){return i.ToString();});但是很明显你仍然必须使用.ToString()和它#sa; 转换而不是演员。

ljs answered 2019-08-13T15:35:48Z
5 votes

您可以使用:

List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();
lutecki answered 2019-08-13T15:36:10Z
1 votes

您必须构建一个新列表。 List<string>List<object>的基础位表示是完全不兼容的 - 例如,在64位平台上,各个成员的大小不同。

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

Curt Hagenlocher answered 2019-08-13T15:36:43Z
1 votes

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

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

Jayant Rajwani answered 2019-08-13T15:37:18Z
translate from https://stackoverflow.com:/questions/44942/cast-listint-to-liststring-in-net-2-0