2

我的 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元素的值。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,以便可以对其进行反序列化。

4

1 回答 1

1

由于您期望一个答案而不是一个IEnumerable,因此您需要使用First

var parsedJson = JObject.Parse(webResponse.Response);
var datasetId = parsedJson["value"].First(n => n.SelectToken("name").ToString() == "Tissue Preps")
                                   .SelectToken("id")
                                   .ToString();
于 2018-07-16T17:40:40.620 回答