11

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

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

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

4

5 回答 5

27

您可以使用Enumerable.Select方法

List<int> intList = intArray.Select(str => int.Parse(str)).ToList();
于 2013-09-30T06:26:12.833 回答
18

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

List<int> intList = intArray.Select(Int32.Parse).ToList();
于 2013-09-30T06:30:51.880 回答
3

只需致电Select()

using System.Linq;

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

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

于 2013-09-30T06:25:29.433 回答
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));
于 2013-09-30T06:32:54.383 回答
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();
于 2013-09-30T13:43:16.360 回答