Remplir une liste d'entiers dans .NET
Question
J'ai besoin d'une liste d'entiers de 1 à x où x est défini par l'utilisateur.Je pourrais le construire avec une boucle for, par exemple en supposant que x est un ensemble entier précédemment :
List<int> iList = new List<int>();
for (int i = 1; i <= x; i++)
{
iList.Add(i);
}
Cela semble stupide, il existe sûrement une manière plus élégante de procéder, quelque chose comme Méthode de plage PHP
La solution
Si vous utilisez .Net 3.5, Énumérable.Range c'est ce dont vous avez besoin.
Génère une séquence de nombres intégraux dans une plage spécifiée.
Autres conseils
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 LINQ101
Je suis l'un des nombreux qui ont blogué à propos d'un rubis À méthode d'extension 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 celle-ci
List<int> = first.To(last).ToList();
ou
List<int> = 1.To(x).ToList();
Voici une courte méthode qui renvoie une liste d'entiers.
public static List<int> MakeSequence(int startingValue, int sequenceLength)
{
return Enumerable.Range(startingValue, sequenceLength).ToList<int>();
}