如何从 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]
}
Run Code Online (Sandbox Code Playgroud)
您可以定义自己的扩展方法来将 an 转换IEnumerable<T>为固定长度,T[]如下所示:
static class EnumerableExtensions
{
public static T[] ToFixedLength<T>(this IEnumerable<T> source, int length)
{
var result = new T[length];
var i = 0;
foreach (var e in source)
{
if (i < length)
{
result[i++] = e;
}
}
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
Enumerable.Range(1, 3).ToFixedLength(10)
Run Code Online (Sandbox Code Playgroud)