68 votes

Remplir une liste d'entiers en .NET

J'ai besoin d'une liste d'entiers de 1 à x où x est défini par l'utilisateur. Je pourrais la construire avec une boucle for, par exemple en supposant que x est un entier défini précédemment :

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

Cela semble stupide, il y a sûrement une façon plus élégante de faire cela, quelque chose comme le Méthode de la gamme PHP

85voto

jfs Points 13605

Si vous utilisez .Net 3.5, Enumerable.Range est ce dont vous avez besoin.

Génère une séquence de nombres entiers dans une plage spécifiée.

41voto

aku Points 54867

LINQ à la rescousse :

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

Voir Opérateurs de production sur LINQ 101

16voto

Samuel Jack Points 14556

Je suis l'un des nombreux qui a sur le blog à propos d'un rubis-esque A que vous pouvez écrire si vous utilisez 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;
        } 
    }
}

Ensuite, vous pouvez créer votre liste d'entiers comme ceci

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

ou

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

1voto

Gaspare Bonventre Points 463

Voici une méthode courte qui renvoie une liste d'entiers.

    public static List<int> MakeSequence(int startingValue, int sequenceLength)
    {
        return Enumerable.Range(startingValue, sequenceLength).ToList<int>();
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X