2010-12-23 73 views
14

我需要一个简单的方法将List<int>转换为string阵列。如何将List <int>转换为string []?

我:

var the_list = new List<int>(); 
the_list.Add(1); 
the_list.Add(2); 
the_list.Add(3); 

string[] the_array = new string[the_list.Count]; 
for(var i = 0 ; i < the_array.Count; ++i) 
    the_array[i] = the_list[i].ToString(); 

...这看起来是很丑陋的我。

是否有更简单的方法?


注:我正在寻找一个容易方式 - 不一定是一个更快的方法。

+0

看起来好像你在问两个不同的问题:什么是更高效,哪个更容易。国际海事组织,这两个问题的答案是不同的:) – 2010-12-23 04:30:12

+0

@Brian:我问哪个更容易 - 抱歉的混乱。 – 2010-12-23 04:40:00

+0

这是最有效的方法,除非在数组中有许多重复元素。这并不意味着它当然是最简单的方法。 – 2010-12-23 04:25:25

回答

44

使用LINQ:

string[] the_array = the_list.Select(i => i.ToString()).ToArray(); 
+0

太快了!谢谢。 – 2010-12-23 04:25:13

+6

快速响应是的,但不幸的是代码不是很快。 – 2010-12-23 04:28:56

4

对不起,我没有安装.NET这台机器上,所以没有经过测试:

var theList = new List<int>() { 1, 2, 3 }; 

var theArray = theList.Select(e => e.ToString()).ToArray();  // Lambda Form 
var theArray = (from e in theList select e.ToString()).ToArray(); // Query Form 
2

名单有toArray()方法。它可以节省你打字的时间,但可能效率不高。

4

我知道你有一个很好的答案,但你不需要LINQ或Select。你可以用ConvertAll和一个匿名方法来做到这一点。像这样:

var list = new List<int>(); 
.... 
var array = list.ConvertAll(x => x.ToString()).ToArray(); 

类似的想法,但我认为这不是linq。如果有问题的话。

0

由于您的列表只有一个数字,您可以轻松地将它们转换为字符串。只需创建一个循环并将其成员转换为字符串。

string[] the_array = new string[the_list.Count]; 
int i=0; 
foreach(var item in the_list) 
{ 
    the_array[i] = item.ToString(); 
    i++; 
} 
相关问题