【发布时间】:2020-04-12 06:01:54
【问题描述】:
如何从 Linq 获取固定长度的数组?
我试过了,还是不行:
void Main() {
// To Array doesn't accept int argument
// Enumerable.Range(1, 3).ToArray(10);
Enumerable.Range(1, 3).Take(10);
// Result is [1,2,3], I expect [1,2,3,null,null, ..., null] or [1,2,3,0,0, ..., 0]
}
【问题讨论】:
-
Enumerable.Range(1, 3).Concat(Enumerable(0, 10 - 3)).ToArray()? -
@KlausGütter 不,我的意思是三个只是示例,可以是 4 个、5 个或超过 10 个
-
坦率地说,这个问题没有用。使用
Concat()是让 LINQ 获得所需内容的最明显方法。您只需为范围的长度传递正确的值。但是让 LINQ 这样做有什么意义呢?分配一个数组然后用你想要的值初始化它是微不足道的。无论如何,数组都是用默认值填充的,所以只要填充应该是默认值,您只需要填写非默认值。你为什么问这个?您具体遇到了什么问题? “给我代码”问题在这里不受欢迎。 -
@PeterDuniho 这是 Unity3d 的问题,基本上我有 10 个插槽的库存,应该由 Unity 编辑器制作。我使用 Linq 获得了项目,但无法将其映射到插槽,因为项目可能低于或超过 10