Заполнение списка целых чисел в .NET - PullRequest
65 голосов
/ 08 сентября 2008

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

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

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

Ответы [ 4 ]

82 голосов
/ 08 сентября 2008

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

Генерирует последовательность интегралов числа в указанном диапазоне.

37 голосов
/ 08 сентября 2008

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

16 голосов
/ 08 сентября 2008

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

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

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

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

или

<code>List<int> = 1.To(x).ToList();
0 голосов
/ 07 апреля 2016

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

    public static List<int> MakeSequence(int startingValue, int sequenceLength)
    {
        return Enumerable.Range(startingValue, sequenceLength).ToList<int>();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...