在 .NET 2.0 中将 List<int> 转换为 List<string>
Posted
技术标签:
【中文标题】在 .NET 2.0 中将 List<int> 转换为 List<string>【英文标题】:Cast List<int> to List<string> in .NET 2.0 【发布时间】:2008-09-04 23:06:56 【问题描述】:你能以某种方式将List<int>
转换为List<string>
吗?
我知道我可以循环使用 .ToString() 这个东西,但是演员阵容会很棒。
我在 C# 2.0 中(所以没有LINQ)。
【问题讨论】:
【参考方案1】:.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(); );
【讨论】:
【参考方案2】:2010 年更新
List<int> l1 = new List<int>(new int[] 1,2,3 );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
【讨论】:
谢谢!这为我节省了大量时间 不,lambdas 是在 C# 3.0 中引入的,所以这在 2.0 中不起作用。 我发现它适用于 VS2008 和 .NET 2.0,只要您至少安装了 .NET 3.0。见***.com/questions/3341846/… 人们应该区分 .NET 版本和 C# 版本。由于箭头x => x.ToString()
被编译为与delegate(int x) return x.ToString();
相同类型的IL,在这种情况下,重要的是要有一个知道=>
是什么的C# 编译器(C# 版本)。框架和运行时(.NET 版本)不需要特殊功能,所以 .NET 2.0 在这里就可以了。
原来你可以放弃<string>
,它仍然有效。让它只是l1.ConvertAll(x => x.ToString());
【参考方案3】:
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(); );
类似的东西。
支持 Glenn 的答案,这可能是正确的代码 ;-)
【讨论】:
【参考方案4】:你可以使用:
List<int> items = new List<int>(new int[] 1,2,3 );
List<string> s = (from i in items select i.ToString()).ToList();
【讨论】:
【参考方案5】:由于不存在从 int 到字符串的显式或隐式转换,因此您将无法直接转换它,它 必须 是一个涉及 .ToString() 的方法,例如:-
foreach (int i in intList) stringList.Add(i.ToString());
编辑 - 或者正如其他人相当出色地指出的那样,使用 intList.ConvertAll(delegate(int i) return i.ToString(); );,但显然你仍然必须使用.ToString() 它是一种转换而不是强制转换。
【讨论】:
泛型类型之间的转换的存在与投影之间的转换能力无关。 IE,即使int
隐式或显式转换为string
,这并不意味着List<int>
隐式或显式转换为List<string>
。【参考方案6】:
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
将参数 result 和 listOfInt 替换为您的参数
【讨论】:
对我来说工作正常 result = listOfInt.Select(i => i.ToString()).ToList();【参考方案7】:你必须建立一个新的列表。 List<int>
和 List<string>
的底层位表示完全不兼容——例如,在 64 位平台上,各个成员的大小甚至都不相同。
理论上可以将List<string>
视为List<object>
- 这将带您进入令人兴奋的协变和逆变世界,目前C# 或VB.NET 不支持。
【讨论】:
@Curt: > 理论上可以将 > 一个 List除了通常的 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();
【讨论】:
以上是关于在 .NET 2.0 中将 List<int> 转换为 List<string>的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 中将 List<IEnumerable<int>> 转换为 List<int> [重复]
如何在 Java 中将 int[] 转换为 List<Integer>?
如何将字典的值复制到 .Net 2.0 中的 IList 对象中?
如何在 Swift 2.0 中将 HKQuanity 转换为 Int