我的 `Enumerable.Range(,)` 发生了什么?

What happened on my `Enumerable.Range(,)`?

我的 Enumerable.Range(,) 发生了什么事? 它产生了一个超出范围的数字 5030。

sellableItems是个小List<T>,我需要从里面随机挑9件

代码如下:

var targetIndexes = Enumerable.Range(i + 1, sellableItems.Count-1)
      .OrderBy(x => random.Next())
      .Take(9)
      .ToArray();

for (var j = 0; j < targetIndexes.Length; j++)
{
     ...
}

Enumerable.Range 方法接受两个参数 - 起始值和计数。

当您执行以下操作时:Enumerable.Range(i + 1, sellableItems.Count - 1),您将从值 37 (i + 1) 和计数 4999 (sellableItems.Count - 1) 开始。

由于调用 Range 时的每次迭代都会将先前的值递增一个(第一次迭代除外,它使用起始值),范围将从 375035.