Consider an array of strings containing numerical values:
string[] intArray = {"25", "65" , "0"};
如何在不使用 for
或 while
循环迭代 intArray
的情况下,将数字加载到 List<int>
中最优雅的方式是什么?
Consider an array of strings containing numerical values:
string[] intArray = {"25", "65" , "0"};
如何在不使用 for
或 while
循环迭代 intArray
的情况下,将数字加载到 List<int>
中最优雅的方式是什么?
List<int> intList = intArray.Select(str => int.Parse(str)).ToList();
(对Dmitry的回答进行补充)
你可以摒弃lambda,因为该方法已经具有正确的签名:
List<int> intList = intArray.Select(Int32.Parse).ToList();
只需调用Select()
函数:
using System.Linq;
var list = intArray.Select(x => Convert.ToInt32(x));
注意:我刚开始回答你的问题后,你修改了问题。
这是做法:
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));
我很惊讶没有人提到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();
var list = intArray.ToList();
。 - Patryk Ćwiek