如何从 foreach 中的其他元素列表填充数组?

use*_*838 3 c# arrays list

我想从其他元素列表中填充我的类型数组。所有这些我想在 foreach 循环中完成。

是否可以?

现在是如何做到的:

// Temp list
List<Parameter> inputData = new List<Parameter>();

// going through collection from which i want to copy
foreach (var parameter in parametersWindow.Parameters)
{
    inputData.Add(new Parameter() { Name = parameter.Name, Value = parameter.Value });
}

// Convertation to array.
Parameter[] parametersToInput = inputData.ToArray();
Run Code Online (Sandbox Code Playgroud)

这就是我想要做的:

Parameter[] parametersToInput = new Parameter[parametersWindow.Parameters.Count]

foreach (var param in parametersWindow.Parameters)
{
   // parametersToInput.add(new Parameter(parameter))
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我吗?

Tim*_*ter 5

数组没有Add方法,因为它无法调整大小。因此,要么也使用列表中的 a List、 use LINQToArray要么正确调整数组大小并使用 -loop for

linq 方法是:

Parameter[] parametersToInput = parametersWindow.Parameters.ToArray();
Run Code Online (Sandbox Code Playgroud)

列表:

List<Parameter> parametersToInput = parametersWindow.Parameters.ToList();
Run Code Online (Sandbox Code Playgroud)

或者

List<Parameter> parametersToInpu = new List<Parameter>(parametersWindow.Parameters);
Run Code Online (Sandbox Code Playgroud)

数组循环方法:

Parameter[] parametersToInput = new Parameter[parametersWindow.Parameters.Count];
for (int i = 0; i < parametersWindow.Parameters.Count; i++)
    parametersToInput[i] = parametersWindow.Parameters[i];
Run Code Online (Sandbox Code Playgroud)

更新parametersWindow.Parameters不是Parameter您需要创建的:

Parameter[] parametersToInput = parametersWindow.Parameters
    .Select(p => new Parameter {  Name = p.Name, Value = p.Value})
    .ToArray();
Run Code Online (Sandbox Code Playgroud)