Ответ 1
Вы можете использовать метод Enumerable.Select
List<int> intList = intArray.Select(str => int.Parse(str)).ToList();
Рассмотрим массив строк, содержащих числовые значения:
string[] intArray = {"25", "65" , "0"};
Каков самый элегантный способ загрузки чисел в List<int>
без использования for
или while
для итерации по intArray
?
Вы можете использовать метод Enumerable.Select
List<int> intList = intArray.Select(str => int.Parse(str)).ToList();
(добавление ответа Дмитрия)
Вы можете избавиться от лямбды, потому что этот метод уже имеет правильную подпись:
List<int> intList = intArray.Select(Int32.Parse).ToList();
Просто позвоните Select()
:
using System.Linq;
var list = intArray.Select(x => Convert.ToInt32(x));
PS: Ваш вопрос изменился после того, как я изначально ответил.
Это способ сделать это.
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();