Заполнение списка целых чисел в .NET

Мне нужен список целых чисел от 1 до x, где x задается пользователем. Я мог бы построить его с помощью цикла for, например, если предположить, что x является целым числом, установленным ранее:

List<int> iList = new List<int>();
for (int i = 1; i <= x; i++)
{
    iList.Add(i);
}

Это кажется глупым, конечно, есть более элегантный способ сделать это, что-то вроде Метод диапазона PHP

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
75
0
34 564
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

LINQ спешит на помощь:

// Adding value to existing list
var list = new List<int>();
list.AddRange(Enumerable.Range(1, x));

// Creating new list
var list = Enumerable.Range(1, x).ToList();

См. Операторы генерации на LINQ 101

Ответ принят как подходящий

Если вы используете .Net 3.5, Enumerable.Range - это то, что вам нужно.

Generates a sequence of integral numbers within a specified range.

Это вернет IEnumerable <int>, а не List <int>, поэтому, как заметил aku, вы захотите вызвать .ToList () при вызове Enumerable.Range (x, y).

Daniel Jennings 08.09.2008 11:49

как правило, лучше использовать IEnumerable <> везде, где это возможно, для максимальной гибкости. особенно, если этот список не меняет, скорее всего, это не должен быть общий List <T>

Simon_Weaver 13.07.2009 23:01

Почему метод диапазона более элегантен, чем простой цикл for с условным значением max?

Jakub Keller 05.08.2015 16:29

IMHO совершенно очевидно, что var List = new List <int> (Max - Min); для (var Index = Min; Index <Max; ++ Index) List.Add (Index); не так элегантен, как Enumerable.Range (Min, Max);

Massimiliano Carosi 11.08.2016 15:27

Я один из многих, у кого есть блоггинг о рубиновом методе расширения К, который вы можете написать, если используете C# 3.0:


public static class IntegerExtensions
{
    public static IEnumerable<int> To(this int first, int last)
    {
        for (int i = first; i <= last; i++)
{ yield return i; } } }

Затем вы можете создать свой список целых чисел, подобный этому

List<int> = first.To(last).ToList();

или же

List<int> = 1.To(x).ToList();

Другие ответы, скорее всего, именно то, что искал вопрошающий, но я проголосовал здесь, потому что мне нравится полученный синтаксис. Насколько читабельнее вы можете получить, чем "1.To (10)"?

Jay Bazuzi 16.09.2008 00:05

Вот короткий метод, который возвращает список целых чисел.

    public static List<int> MakeSequence(int startingValue, int sequenceLength)
    {
        return Enumerable.Range(startingValue, sequenceLength).ToList<int>();
    }

Другие вопросы по теме