在.NET中填充整数列表

Gle*_*ven 67 .net c# integer list

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

List<int> iList = new List<int>();
for (int i = 1; i <= x; i++)
{
    iList.Add(i);
}
Run Code Online (Sandbox Code Playgroud)

这看起来很愚蠢,肯定有一种更优雅的方式来实现这一点,就像PHP范围方法一样

jfs*_*jfs 84

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

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

  • 这将返回一个IEnumerable <int>,而不是List <int>,所以就像aku所说,你需要在Enumerable.Range(x,y)调用上调用.ToList(). (3认同)

aku*_*aku 39

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();
Run Code Online (Sandbox Code Playgroud)

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


Sam*_*ack 16

我是博客中关于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();

  • 其他答案更有可能是提问者正在寻找的答案,但我在这里投票是因为我喜欢生成的语法。比“1.To(10)”可读性强多少? (2认同)