title: Query JSON using LINQ
body: <p>I have a Json response that I receive from an API call. It has several nested levels as show below (this is a snippet):</p>
  
  <pre><code>"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
              }
            ]
          }
        },
  }
  ]
  ...
  </code></pre>
  
  <p>What I want to do is retreive the data from the PayCycle node using Linq. I can for example get the items with a value of true using  Result.ServiceAgreement.AdditionalItems.SchedultedBased using the following Linq in the Controller:</p>
  
  <pre><code>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"]
               };
  </code></pre>
  
  <p>Now I need to get <code>Result.ServiceAgreement.AdditionalItems.Paycycle.ScheduleBased</code> and <code>SelfBilling</code> properties. How do I do this if PayCycle is also an array, how do I get the children as I did with Data.Items in the Linq above so that I can have the where clause filter on both these items?</p>