Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 简单序列生成?_C#_Linq_Sequence - Fatal编程技术网

C# 简单序列生成?

C# 简单序列生成?,c#,linq,sequence,C#,Linq,Sequence,我正在寻找一种非常简单的方法来生成数字列表,1-200。 (它可以是列表、数组、可枚举……我并不真正关心具体的类型) 显然.NET4.0有一个方法。 但我现在在.NET3.5上 下面是我所追求的示例用法,以Sequence.Range显示 public void ShowOutput(Sequence.Range(1,200)); 目前,我需要消费数字1-200。在未来的迭代中,我可能需要任意的数字列表,所以我试图保持设计的灵活性 也许有一个好的LINQ解决方案?还有其他想法吗?.NET3,5

我正在寻找一种非常简单的方法来生成数字列表,1-200。 (它可以是列表、数组、可枚举……我并不真正关心具体的类型)

显然.NET4.0有一个方法。 但我现在在.NET3.5上

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

public void ShowOutput(Sequence.Range(1,200));
目前,我需要消费数字1-200。在未来的迭代中,我可能需要任意的数字列表,所以我试图保持设计的灵活性


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

.NET3,5也有
范围。它实际上是并返回
IEnumerable

你链接到的页面已经过时了-它说3是“未来版本”,而
可枚举的
静态类在发布之前的某个点被称为
序列

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

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

关于你问题的第二部分,“任意列表”是什么意思?如果可以定义从
int
到新值的函数,则可以将Range的结果与其他LINQ方法一起使用:

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

你确实是对的。我读得不够仔细。谢谢你帮我澄清。事实上,你的实现是不正确的
Enumerable.Range()
的格式为
Range(int start,int count)
,因此第二个参数应该是“
count
”,停止条件应该是
n
。这是正确的。我已将示例更改为略有不同(始终从零开始),因为您可以使用
Select
为每个项目添加偏移量-正交性示例。
var evens = Enumerable.Range(0, someLimit).Select(n => n * 2);
var r = Enumerable.Range( 1, 200 );
var squares = from i in Enumerable.Range(1, 200)
              select i * i;