Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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 - Fatal编程技术网

C# 如何获取可枚举范围的上界

C# 如何获取可枚举范围的上界,c#,linq,C#,Linq,我试图获得linqs可枚举范围的上界,例如: Enumerable.Range(0, 3).Select(x => "index: " + x + " Max: ").ToList(); 名单应包括: index: 0 Max: 3 index: 1 Max: 3 index: 2 Max: 3 ... 你不能。Select的输入可以是任何序列,它可能根本没有上限(很明显,值不能超过Int32.MaxValue,但除此之外,没有办法知道) 在您的例子中,由于Enumerable.Ran

我试图获得linqs可枚举范围的上界,例如:

Enumerable.Range(0, 3).Select(x => "index: " + x + " Max: ").ToList();
名单应包括:

index: 0 Max: 3
index: 1 Max: 3
index: 2 Max: 3
...

你不能。
Select
的输入可以是任何序列,它可能根本没有上限(很明显,值不能超过
Int32.MaxValue
,但除此之外,没有办法知道)


在您的例子中,由于
Enumerable.Range
的参数是硬编码的,因此显然您可以推断最大值,即
start+count-1=2
。请注意,3是计数,而不是最大值;它恰好是唯一的上限,但这只是因为起始值是0。

您不能,不完全是这样。lambda函数将始终在实例的范围内执行

您可以这样做:

var range = Enumerable.Range(0, 3);
range.Select(x => "index: " + x + " Max: " + range.Max()).ToList();
但你也可以这样做:

var range = Enumerable.Range(0, 3);
var max = range.Max();
range.Select(x => "index: " + x + " Max: " + max).ToList();

顺便说一句,由于您使用的范围从零开始(
[0,1,2]
),因此最大值将是2,而不是3。您想改为使用
.Count()
,还是不使用?

可枚举的.Range(0,3)。选择(x=>“索引:”+x+“最大值:”+3)。ToList()因为您已经知道
3
:)注意<代码>3
不是“上限”或“最大值”-它是一个完美的计数。这正是我需要的
var range = Enumerable.Range(0, 3);
var max = range.Max();
var s = range.Select(x => string.Format("Index: {0}, Max: {1}", x, max));