3

他の要素のリストから自分の型の配列を埋めたいです。このすべてを 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))
}

誰でも私を助けることができますか?

4

4 に答える 4

5

配列はAddサイズ変更できないため、メソッドはありません。したがって、 も使用するか、リストからListを使用するか、配列LINQToArrayサイズを正しく設定してfor-loop を使用します。

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();
于 2013-10-18T09:11:55.470 に答える
1

本当に 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);
于 2013-10-18T09:36:25.100 に答える
0

Linq を使用できます。

Parameter[] parametersToInput = parametersWindow.Parameters
                                     .Select(p => 
                                        new Parameter() { 
                                           Name = p.Name, Value = p.Value })
                                     .ToArray();
于 2013-10-18T09:20:16.640 に答える
0

何か不足していますか?これは、ループをいじることなく完全な LINQ で実行できます。

Parameter[] parametersToInput = parametersWindow.Select(p => p.Parameters).ToArray();

オンライン。ドラマはありません。

追加の処理を実行する場合;

Parameter[] parametersToInput = parametersWindow.Select(p => 
{
    ProcessParameters(p);
    return p.Parameters;
}).ToArray();

このSelectメソッドは、1 対 1 の型変換に最適です。LINQでは、なぜ他の方法でそれを行うのかわかりません:)

于 2013-10-18T09:19:11.857 に答える