Domanda

Ho bisogno di una lista di numeri interi da 1 a x, dove x è impostato dall'utente.Ho potuto costruire con un ciclo for, ad esempio supponendo che x è un numero intero set in precedenza:

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

Questo sembra stupido, sicuramente c'è un modo più elegante per fare questo, qualcosa di simile a PHP metodo range

È stato utile?

Soluzione

Se si sta utilizzando .Net 3.5, Enumerabile.Gamma è ciò di cui avete bisogno.

Genera una sequenza di integrale i numeri all'interno di un intervallo specificato.

Altri suggerimenti

LINQ to the rescue:

// 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();

Vedere Generazione Di Operatori su LINQ 101

Io sono uno dei tanti che ha bloggato circa un rubino-esque Per metodo di estensione che si può scrivere, se si utilizza 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; } } }

Quindi è possibile creare la vostra lista di numeri interi come questo

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

o

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

Ecco un breve metodo che restituisce una Lista di interi.

    public static List<int> MakeSequence(int startingValue, int sequenceLength)
    {
        return Enumerable.Range(startingValue, sequenceLength).ToList<int>();
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top