0

Windows Phone アプリを作成し、JSON.NET を使用してデータを処理しています。
想像してみてくださいList<myObject>
直接作る方法がわからないので、次のようにします。

IList<string> data1= json["response"].First.Select(data => (string)data.SelectToken("data1")).ToList();
IList<string> data2= json["response"].Last.Select(data => (string)data.SelectToken("data2")).ToList();
IList<string> data3 = json["response"].First.Select(data => (string)data.SelectToken("data3")).ToList();

List<myObject> myList = new List<myObject>();

for (int i = 0; i < data1.Count; i++)
{
    myList.Add(data1[i], data2[i], data3[i]);
}

これらすべてを json からの 1 つのデータ選択に結合する方法はありますか?

ありがとうございました。

4

1 に答える 1

2

トークンを直接選択して、1 回のパスでオブジェクトを構築できます。つまり、次のようになります。

List<myObject> myList = json["response"].First.Select(data => 
     new myObject(
           (string)data.SelectToken("data1"),
           (string)data.SelectToken("data2"),
           (string)data.SelectToken("data3")
         )).ToList();

編集 -

編集が完了したので、データには 1 つのシーケンスが含まれなくなりました。Enumerable.Zip を使用してこれらをマージできます。

var data1 = json["response"].First.Select(d => new { 
           d1 = (string)data.SelectToken("data1"),
           d3 = (string)data.SelectToken("data3") });
var data2 = json["response"].Last.Select(data => (string)data.SelectToken("data2"));

List<myObject> results = data1.Zip(data2, (d, d2) => new myObject(d.d1, d2, d.d3)).ToList();
于 2012-08-06T19:23:07.090 に答える