关于c#:. NET 2.0中的将List <int>转换为List <string>

关于c#:. NET 2.0中的将List <int>转换为List <string>

Cast List to List in .NET 2.0

可以将List强制转换为List吗?

我知道我可以循环遍历.ToString(),但是强制转换会很棒。

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


.NET 2.0具有ConvertAll方法,您可以在其中传递转换器函数:

1
2
List<int>    l1 = new List<int>(new int[] { 1, 2, 3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });

2010年更新

1
2
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?如果是这样,我认为您最好的猜测是将其与委托一起使用:

1
2
3
4
5
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });

遵循这些原则。

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


您可以使用:

1
2
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()的方法,例如:

1
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()

将参数结果和listOfInt替换为您的参数


您必须建立一个新列表。 ListList的基础位表示形式完全不兼容-例如,在64位平台上,单个成员的大小甚至都不相同。

从理论上讲,将List视为List是可能的-这将使您进入令人兴奋的协方差和协变世界,并且C#或VB.NET当前不支持。


从int List转换为字符串List可以用通常的ToString()以外的两种附加方式完成。选择一个令您满意的选择。

1
var stringlist = intlist.Select(x=>""+x).ToList();

或者:

1
var stringlist = intlist.Select(x=>$"{x}").ToList();

最后是传统的:

1
var stringlist = intlist.Select(x=>x.ToString()).ToList();


推荐阅读