80

我需要一个从 1 到 x 的整数列表,其中 x 由用户设置。我可以使用 for 循环来构建它,例如假设 x 之前是一个整数集:

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

这看起来很愚蠢,肯定有更优雅的方法来做到这一点,比如PHP range 方法

4

4 回答 4

97

如果您使用的是 .Net 3.5,那么Enumerable.Range就是您所需要的。

生成指定范围内的整数序列。

于 2008-09-08T05:49:40.043 回答
51

LINQ 救援:

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

请参阅LINQ 101上的生成运算符

于 2008-09-08T05:48:00.407 回答
18

我是许多写过关于 ruby​​-esque To扩展方法的人之一,如果您使用 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; } } }

然后你可以像这样创建你的整数列表

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

或者

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

于 2008-09-08T08:58:47.220 回答
1

这是一个返回整数列表的简短方法。

    public static List<int> MakeSequence(int startingValue, int sequenceLength)
    {
        return Enumerable.Range(startingValue, sequenceLength).ToList<int>();
    }
于 2016-04-06T21:04:08.247 回答