我的LINQ-Fu技能非常糟糕,在查看JSON.NET示例之后,我仍然很难弄清楚如何选择我想要的数据。我有一堆JSON,如下所示...
{
"@odata.context": "http://wabi-us-north-central-b-redirect.analysis.windows.net/v1.0/myorg/$metadata#groups",
"@odata.count": 2,
"value": [
{
"id": "z48856e6-f385-4c89-a4b8-33c24hsr5c",
"isReadOnly": false,
"isOnDedicatedCapacity": false,
"name": "Blood Values"
},
{
"id": "k95d7cfe-c2a5-41f9-804w-e1b7ab31g31k",
"isReadOnly": false,
"isOnDedicatedCapacity": false,
"name": "Tissue Preps"
}
]
}
我正在尝试编写LINQ to JSON表达式,该表达式将允许我选择id
值等于“ Tissue Preps”的name
元素的值。
var parsedJson = JObject.Parse(webResponse.Response);
var datasetId = parsedJson["value"].Select(i => i.SelectToken("id")).Where(n => n.SelectToken("name").ToString() == "Tissue Preps");
上面是我尝试过的LINQ表达式,但最终遇到了Object reference not set to an instance of an object.
错误。我想避免不得不编写一个类来表示JSON,以便可以反序列化它。
答案 0 :(得分:1)
由于您希望得到一个答案而不是一个IEnumerable
,因此需要使用First
:
var parsedJson = JObject.Parse(webResponse.Response);
var datasetId = parsedJson["value"].First(n => n.SelectToken("name").ToString() == "Tissue Preps")
.SelectToken("id")
.ToString();