json.net IEnumerable

Yeh*_*lam 3 c# json.net c#-3.0

我有以下json文件

{"fields":[
  {
     "status":"active",
     "external_id":"title",
     "config":{},
     "field_id":11848871,
     "label":"Title",
     "values":[
        {
           "value":"Test Deliverable"
        }
     ],
     "type":"text"
  },{
     "status":"active",
     "external_id":"client-name",
     "config":{},
     "field_id":12144855,
     "label":"Client Name",
     "values":[
        {
           "value":"Chcuk Norris"
        }
     ],
     "type":"text"
  }}
Run Code Online (Sandbox Code Playgroud)

我想选择具有external_id ="title"的字段的值,例如,我正在使用Json.Net并且已经解析了该对象.我如何在Json对象上使用lambda或linq这样做,我想这样的事情

JObject o = JObject.Parse(json);
Title = o["fields"].Select(q => q["extenral_id"].Values[0] == "title");
Run Code Online (Sandbox Code Playgroud)

这在语法方面不是事件正确的.我不太熟悉Lambda或Linq认为它已经存在了一段时间.感谢帮助

谢谢

叶海亚

gdp*_*gdp 6

或者你可以这样做:

 string json = "{\"fields\":[{\"status\":\"active\",\"external_id\":\"title\",\"config\":{},\"field_id\":11848871,\"label\":\"Title\",\"values\":[{\"value\":\"Test Deliverable\"}],\"type\":\"text\"},{\"status\":\"active\",\"external_id\":\"client-name\",\"config\":{},\"field_id\":12144855,\"label\":\"Client Name\",\"values\":[{\"value\":\"Chcuk Norris\"}],\"type\":\"text\"}]}";

 JObject obj = JObject.Parse(json);

 JArray arr = (JArray)obj["fields"];

 var externalIds = arr.Children().Select(m=>m["external_id"].Value<string>());
Run Code Online (Sandbox Code Playgroud)

externalIds是一个IEnumerable字符串数组

或者您可以将它链接在一起并在一行中选择对象:

var myVal = JObject.Parse(json)["fields"].Children()
                                        .Where(w => w["external_id"].ToString() == "title")
                                        .First();
Run Code Online (Sandbox Code Playgroud)

从那里你可以附加你想要的任何选择器,即如果你想要external_id值然后追加["external_id"].ToString()到first()选择器的末尾.