Pregunta

Necesito una lista de números enteros de 1 a x, donde x es fijado por el usuario.Yo podría construir con un bucle for por ejemplo suponiendo que x es un número entero especificado anteriormente:

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

Esto parece tonto, seguro que hay una forma más elegante de hacer esto, algo así como el PHP método de intervalo

¿Fue útil?

Solución

Si usted está usando .Net 3.5, Enumerable.Rango de es lo que usted necesita.

Genera una secuencia de integral los números dentro de un rango especificado.

Otros consejos

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

Ver La Generación De Los Operadores en LINQ 101

Yo soy uno de los muchos que tiene escribió en su blog sobre un rubí-esque A método de extensión que se puede escribir si estás 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; } } }

A continuación, puede crear su lista de enteros como este

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

o

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

Aquí está un breve método que devuelve una Lista de enteros.

    public static List<int> MakeSequence(int startingValue, int sequenceLength)
    {
        return Enumerable.Range(startingValue, sequenceLength).ToList<int>();
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top