简单的序列生成?

abe*_*nky 4 c# linq sequence

我正在寻找一种超简单的方法来生成数字列表,1-200.(它可以是List,Array,Enumerable ......我真的不关心特定的类型)

显然.Net 4.0有一个Sequence.Range(min,max)方法.但我目前在.Net 3.5上.

以下是我所使用的示例用法,与Sequence.Range一起显示.

public void ShowOutput(Sequence.Range(1,200));
Run Code Online (Sandbox Code Playgroud)

目前,我需要1-200个连续数字.在未来的迭代中,我可能需要任意数字列表,所以我试图保持设计的灵活性.

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

Dan*_*ker 13

.NET 3,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;
}
Run Code Online (Sandbox Code Playgroud)

您可以轻松编写其他进一步筛选列表的方法:

IEnumerable<int> Double(IEnumerable<int> source)
{
    foreach (int n in source)
        yield return n * 2;
}
Run Code Online (Sandbox Code Playgroud)

但是你有3.5,你可以使用扩展方法System.Linq.Enumerable来做到这一点:

var evens = Enumerable.Range(0, someLimit).Select(n => n * 2);
Run Code Online (Sandbox Code Playgroud)


JP *_*oto 6

var r = Enumerable.Range( 1, 200 );
Run Code Online (Sandbox Code Playgroud)