2

私は要素タイプを持っています:

public class FieldInfo
{
  public string Label { get; set; }
  public string Value { get; set; }
}

そして、オブジェクトで満たされた配列がありFieldInfoます。

FieldInfo[] infos = new FieldInfo[]
                      {
                        new FieldInfo{Label = "label1", Value = "value1"},
                        new FieldInfo{Label = "label2", Value = "value2"}
                      };

次に、その配列を次の値を含む新しい配列に変換します。

string[] wantThatArray = new string[] {"label1", "value1", "label2", "value2"};

infosのような配列から配列のような変換を行う簡単な方法はありwantThatArrayますか?
多分LINQの選択で?

4

5 に答える 5

10
string[] wantThatArray = infos
    .SelectMany(f => new[] {f.Label, f.Value})
    .ToArray();
于 2012-09-21T13:19:01.820 に答える
8

私はそれを簡単に保ちます:

string[] wantThatArray = new string[infos.Length * 2];
for(int i = 0 ; i < infos.Length ; i++) {
   wantThatArray[i*2] = infos[i].Label;
   wantThatArray[i*2 + 1] = infos[i].Value;
}
于 2012-09-21T13:17:09.673 に答える
2

Marc Gravell のソリューションとは少し異なるバリアント

string[] wantThatArray = new string[infos.Length * 2];
for (int i = 0, k = 0; i < infos.Length; i++, k += 2) {
   wantThatArray[k] = infos[i].Label;
   wantThatArray[k + 1] = infos[i].Value;
}
于 2012-09-21T13:23:36.303 に答える
0

別のバリアント:

string[] yourarray = infos.Select(x => string.Format("{0},{1}", x.Label, x.Value))
                          .Aggregate((x, y) => string.Format("{0},{1}", x, y))
                          .Split(',');

うーん、でも良くない.. :(他のものと比べて!

于 2012-09-21T13:29:42.140 に答える
-1
FieldInfo[,] infos = new FieldInfo[,]{
                    new FieldInfo{"label1", "value1"},
                    new FieldInfo{"label2", "value2"}
                  };

string[] to = infos.Cast<FieldInfo>().ToArray();

これで、簡単に に変換できtoますinfos

于 2012-09-21T13:17:55.877 に答える