Preenchendo uma lista de números inteiros em .NET
Pergunta
Preciso de uma lista de números inteiros de 1 a x onde x é definido pelo usuário.Eu poderia construí-lo com um loop for, por exemplo, assumindo que x é um número inteiro definido anteriormente:
List<int> iList = new List<int>();
for (int i = 1; i <= x; i++)
{
iList.Add(i);
}
Isso parece idiota, certamente há uma maneira mais elegante de fazer isso, algo como o Método de intervalo PHP
Solução
Se você estiver usando .Net 3.5, Enumerável.Range é o que você precisa.
Gera uma sequência de números integrais dentro de um intervalo especificado.
Outras dicas
LINQ para o resgate:
// 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();
Ver Operadores de Geração sobre LINQ101
Eu sou um dos muitos que tem blogado sobre um estilo rubi Para método de extensão que você pode escrever se estiver usando 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;
}
}
}
Então você pode criar sua lista de números inteiros como esta
List<int> = first.To(last).ToList();
ou
List<int> = 1.To(x).ToList();
Aqui está um método curto que retorna uma lista de inteiros.
public static List<int> MakeSequence(int startingValue, int sequenceLength)
{
return Enumerable.Range(startingValue, sequenceLength).ToList<int>();
}