将字符串数组加载到List <int>?</int>的最优雅方法是什么?

时间:2013-09-30 06:24:33

标签: c# list initialization

考虑一个包含数值的字符串数组:

string[] intArray = {"25", "65" , "0"};

在不使用List<int>for来迭代while的情况下,将数字加载到intArray的最优雅方法是什么?

5 个答案:

答案 0 :(得分:27)

您可以使用Enumerable.Select方法

List<int> intList = intArray.Select(str => int.Parse(str)).ToList();

答案 1 :(得分:18)

(除了德米特里的回答)
你可以摆脱lambda,因为那个方法已经有了正确的签名:

List<int> intList = intArray.Select(Int32.Parse).ToList();

答案 2 :(得分:3)

只需致电Select()

using System.Linq;

var list = intArray.Select(x => Convert.ToInt32(x));

PS:我最初回答后你的问题发生了变化。

答案 3 :(得分:2)

这是做到这一点的方法..

string[] intArray = { "25", "65", "0" };
List<int> intList = new List<int>(Array.ConvertAll(intArray, s => int.Parse(s)));

 string[] intArray = { "25", "65", "0" };
 List<int> intList = new List<int>(intArray.Select(int.Parse).ToArray());

 string[] intArray = { "25", "65", "0" };
 List<int> intList = new List<int>(Array.ConvertAll(intArray, int.Parse));

答案 4 :(得分:0)

我很惊讶没人提到int.TryParse

string[] intArray = { "25", "65", "0" };
int tempNumber;
List<int> list = intArray.Select(r => int.TryParse(r, out tempNumber) 
                                     ? tempNumber : -1)
                     .ToList();

这将处理无效输入并返回-1作为值。 (可以是指定错误的任何数字或0

如果intArray只包含可解析的整数,那么下面的工作就可以了:

List<int> list = intArray.Select(int.Parse).ToList();