考虑一个包含数值的字符串数组:
string[] intArray = {"25", "65" , "0"};
在不使用List<int>
或for
来迭代while
的情况下,将数字加载到intArray
的最优雅方法是什么?
答案 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();