Подтвердить что ты не робот

Каков самый элегантный способ загрузки строкового массива в List <int>?

Рассмотрим массив строк, содержащих числовые значения:

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

Каков самый элегантный способ загрузки чисел в List<int> без использования for или while для итерации по intArray?

4b9b3361

Ответ 1

Вы можете использовать метод Enumerable.Select

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

Ответ 2

(добавление ответа Дмитрия)
Вы можете избавиться от лямбды, потому что этот метод уже имеет правильную подпись:

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

Ответ 3

Просто позвоните Select():

using System.Linq;

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

PS: Ваш вопрос изменился после того, как я изначально ответил.

Ответ 4

Это способ сделать это.

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));

Ответ 5

Я удивлен, что никто не упомянул 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();