С#: Build Список лет как целые числа

Я хотел бы создать С# List целых чисел, например, с 1930 по 2010 год. В верхней части моей головы единственный способ сделать это - использовать for или while цикл для циклического преобразования каждого целого числа между числами и их индивидуального добавления в List.

Я знаю, что в списках С# есть много интересных методов, особенно когда вы используете Linq. Может ли кто-нибудь подумать об более эффективном способе этого?

Ответ 1

Enumerable.Range(1930, 81) (Документы MSDN) предоставит вам перечислимое, содержащее то, что вы хотите. Первым параметром является начальное значение, а второе - количество элементов. Вам нужно 81 вместо 80, потому что вы хотите от 1930 до 2010 года включительно.

Если вы явно хотите использовать его как List, используйте Enumerable.Range(1930, 81).ToList().

Этот метод, вероятно, не отличается по эффективности, но является более кратким кодом.

Ответ 2

Используйте Enumerable.Range()

var MyList = Enumerable.Range(1930, 2010-1930+1).ToList();

Ответ 3

Два других ответа верны, использование Enumberable.Range() - это быстрый/простой способ сделать это, но я бы добавил на кусок. Используйте DateTime.Now.Year, поэтому вам не нужно исправлять код каждый год. Через два месяца использование жестко заданного значения для второго параметра сделало бы это устаревшим.

List<int> listYears = Enumerable.Range(1930, DateTime.Now.Year - 1930 + 1).ToList();

Ответ 4

Итак, хотя на это был дан ответ (с хорошими ответами), почему бы не создать методы, которые "дают" (метод генератора) - - Enumerable.Range - это просто стандартный метод:

IEnumerable<int> InclusiveRange(int s, int e) {
   for (int i = s; i <= e; i++) {
     yield return i;
   }
}

var r = InclusiveRange(1930, 2010).ToList();

Счастливое кодирование.