如何从foreach中的其他元素列表中填充数组
本文关键字:元素 列表 填充 数组 其他 foreach | 更新日期: 2023-09-27 18:35:59
我想从其他元素列表中填充我的类型数组。所有这些都想在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();
这就是我想做的:
Parameter[] parametersToInput = new Parameter[parametersWindow.Parameters.Count]
foreach (var param in parametersWindow.Parameters)
{
// parametersToInput.add(new Parameter(parameter))
}
谁能帮我?
数组
没有Add
方法,因为它无法调整大小。因此,要么也使用 List
,使用列表中的 LINQ
ToArray
,或者正确调整数组的大小并使用 for
循环。
linq 方法是:
Parameter[] parametersToInput = parametersWindow.Parameters.ToArray();
该列表:
List<Parameter> parametersToInput = parametersWindow.Parameters.ToList();
或
List<Parameter> parametersToInpu = new List<Parameter>(parametersWindow.Parameters);
数组换环方法:
Parameter[] parametersToInput = new Parameter[parametersWindow.Parameters.Count];
for (int i = 0; i < parametersWindow.Parameters.Count; i++)
parametersToInput[i] = parametersWindow.Parameters[i];
更新 由于parametersWindow.Parameters
不是您创建Parameter
:
Parameter[] parametersToInput = parametersWindow.Parameters
.Select(p => new Parameter { Name = p.Name, Value = p.Value})
.ToArray();
如果你真的不想做一个Foreach循环,你可以试试这个:
//Your List
List<Parameter> inputData = new List<Parameter>();
//Fill Your List Here
//Your Array
Parameter[] parametersToInput = new Parameter[inputData.Count];
//Filling Your Array from Your List
int index = 0;
inputData.ForEach(e => parametersToInput[index++] = e);
您可以使用 Linq:
Parameter[] parametersToInput = parametersWindow.Parameters
.Select(p =>
new Parameter() {
Name = p.Name, Value = p.Value })
.ToArray();
我错过了什么吗?你可以这样做是完整的 LINQ,而不会弄乱循环。
Parameter[] parametersToInput = parametersWindow.Select(p => p.Parameters).ToArray();
在线。没有戏剧性。
如果要执行其他处理;
Parameter[] parametersToInput = parametersWindow.Select(p =>
{
ProcessParameters(p);
return p.Parameters;
}).ToArray();
Select
方法非常适合一对一类型的转换。对于 LINQ,我不知道为什么要以其他方式执行此操作:)