Каков самый элегантный способ загрузки строкового массива в List <int>? Рассмотрим массив строк, содержащих числовые значения: string[] intArray = {"25", "65" , "0"}; Каков самый элегантный способ загрузки чисел в List<int> без использования for или while для итерации по intArray? Ответ 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();
Ответ 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();