LINQ to JSON - Select 特定 属性 匹配的数组对象元素
LINQ to JSON - Select array object element where specific property matches
我的 LINQ-Fu 技能很差,在查看 JSON.NET 示例后,我仍然无法弄清楚如何 select 我想要的数据。我有一个 JSON 的 blob 如下 ...
{
"@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 表达式,它允许我 select id
元素的值,其中 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.
错误。我想避免必须写一个 class 来表示 JSON 所以它可以被反序列化。
由于您希望得到一个答案而不是 IEnumerable
,因此您需要使用 First
:
var parsedJson = JObject.Parse(webResponse.Response);
var datasetId = parsedJson["value"].First(n => n.SelectToken("name").ToString() == "Tissue Preps")
.SelectToken("id")
.ToString();
我的 LINQ-Fu 技能很差,在查看 JSON.NET 示例后,我仍然无法弄清楚如何 select 我想要的数据。我有一个 JSON 的 blob 如下 ...
{
"@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 表达式,它允许我 select id
元素的值,其中 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.
错误。我想避免必须写一个 class 来表示 JSON 所以它可以被反序列化。
由于您希望得到一个答案而不是 IEnumerable
,因此您需要使用 First
:
var parsedJson = JObject.Parse(webResponse.Response);
var datasetId = parsedJson["value"].First(n => n.SelectToken("name").ToString() == "Tissue Preps")
.SelectToken("id")
.ToString();