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

Foi útil?

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>();
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top