我正在寻找一种超简单的方法来生成数字列表,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)