如何从linq获取固定长度的数组?

Kev*_*aja 0 c# linq arrays

如何从 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)

Kla*_*ter 5

您可以定义自己的扩展方法来将 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)