代码之家  ›  专栏  ›  技术社区  ›  abelenky

简单序列生成?

  •  4
  • abelenky  · 技术社区  · 17 年前

    我正在寻找一种非常简单的方法来生成数字列表,1-200。

    显然.NET4.0有一个 Sequence.Range(min,max) 方法 但我现在在.NET3.5上。

    下面是我所追求的示例用法,以Sequence.Range显示。

    public void ShowOutput(Sequence.Range(1,200));
    

    也许有一个好的LINQ解决方案?还有其他想法吗?

    3 回复  |  直到 17 年前
        1
  •  16
  •   Vyktor    12 年前

    .NET3,5已经发布 Range 也实际上是 Enumerable.Range 返回 IEnumerable<int> .

    你链接到的页面已经过时了——它说3是一个“未来版本”和 Enumerable 静态类被称为 Sequence 在发布之前的某个点。

    如果您想自己在C#2或更高版本中实现它,这很容易——这里有一个:

    IEnumerable<int> Range(int count)
    {
        for (int n = 0; n < count; n++)
            yield return n;
    }
    

    IEnumerable<int> Double(IEnumerable<int> source)
    {
        foreach (int n in source)
            yield return n * 2;
    }
    

    但是,正如3.5一样,您可以在中使用扩展方法 System.Linq.Enumerable 为此:

    var evens = Enumerable.Range(0, someLimit).Select(n => n * 2);
    
        2
  •  6
  •   JP Alioto    17 年前
    var r = Enumerable.Range( 1, 200 );
    
        3
  •  3
  •   dahlbyk    17 年前

    退房 System.Linq.Enumerable.Range

    int 对于新值,您可以将Range的结果与其他LINQ方法一起使用:

    var squares = from i in Enumerable.Range(1, 200)
                  select i * i;