私はAPIコールから受け取ったJson応答を持っています。それは(これは抜粋です)以下のショーとして、いくつかのネストされたレベルがあります。私は何をしたいかLINQを使用したJSONのクエリ
"Items": [
{
"Result": {
"Id": "191e24b8-887d-e111-96ec-000c29128cee",
"Name": "Name",
"StartDate": "2012-04-03T00:00:00+01:00",
"EndDate": null,
"Status": {
"Name": "Active",
"Value": 5
},
"Client": {
"Id": "35ea10da-b8d5-4ef8-bf23-c829ae90fe60",
"Name": "client Name",
"AdditionalItems": {}
},
"ServiceAgreement": {
"Id": "65216699-a409-44b0-8294-0e995eb05d9d",
"Name": "Name",
"AdditionalItems": {
"ScheduleBased": true,
"PayFrequency": {
"Id": "981acb72-8291-de11-98fa-005056c00008",
"Name": "Weekly",
"AdditionalItems": {}
},
"PayCycle": [
{
"Name": "Schedule Based",
"ScheduleBased": true,
"SelfBilling": false,
"Id": "a8a2ecc4-ff79-46da-a135-743b57808ec3",
"CreatedOn": "2011-09-16T23:32:19+01:00",
"CreatedBy": "System Administrator",
"ModifiedOn": "2011-09-16T23:32:19+01:00",
"ModifiedBy": "System Administrator",
"Archived": false
}
]
}
},
}
]
...
は、LINQのを使用してペイサイクル・ノードからデータを盗んであります。
var result = from p in data["Data"]["Items"].Children()
where (bool)p["Result"]["ServiceAgreement"]["AdditionalItems"]["ScheduleBased"] == true
select new
{
Name = (string)p["Result"]["Client"]["Name"],
Id = (string)p["Result"]["Client"]["Id"]
};
今、私はResult.ServiceAgreement.AdditionalItems.Paycycle.ScheduleBased
とSelfBilling
プロパティを取得する必要があります:私は、たとえばコントローラで次のLINQを使用してResult.ServiceAgreement.AdditionalItems.SchedultedBasedを使用して、真の値を持つ項目が得ることができます。 PayCycleも配列の場合はどのようにすればいいですか?上記のLinqのData.Itemsで行ったように子どもを取得するにはどうすればいいですか?
PayCycleコレクションはコレクション内のアイテムを1つだけ戻すため、私はわずかに修正しました。たとえば、SelfBillingプロパティを取得するには、where節で次のようにします。where(bool)p ["ResultAction"] ["AdditionalItems"] ["PayCycle"] [0] ["SelfBilling"] == falseです。これは私が探している結果をもたらします。 – KDee