c# - 我的 `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
都会将前一个值增加一个(第一次迭代除外,它使用起始值),范围将是 from37
到5035
。
推荐阅读
- ios - 在 XCode 12.5 上构建 ReactNative 0.59.10 忽略 Pod
- spring-boot - Ant/Ivy 类加载器问题?Swagger UI 3 -> java.lang.ClassNotFoundException: io.swagger.models.Swagger
- c# - Visual Studio 数据源设置 - 检索数据库信息需要很长时间
- c - 字符串字面量初始化为数组
- asp.net-core-webapi - 通过基本配置在 ASP.NET Core 中使用不记名令牌
- kubernetes - 没有自动解决 pagerduty 的 Blackbox 警报
- html - CSS边界属性,奇怪的行为
- java - Oracle:如何调用具有 10 个 IN 属性和 2 个 OUT 属性的 PL/SQL 过程?
- python - 错误:数据类型必须提供项目大小?
- azure - ARM 创建嵌套管理组