繁体   English   中英

'Newtonsoft.Json.Linq.JArray'不包含。的定义

[英]'Newtonsoft.Json.Linq.JArray' does not contain a definition for

我有以下JSON:

{
    "ok": true,
    "resp": [
        {
            "aaa": 111,
            "bbb": "xyz",
            "ccc": [
                {...},
                {
                    "ddd": "hello",
                    "eee": 666,
                },
                {...}
            ],
            "read": false
        },
        {...},
        {...}
    ]
}

和这个C#代码:

dynamic my_obj = JsonConvert.DeserializeObject(JSON);
var resps = my_obj.resp;
var x = ((IEnumerable<dynamic>)resps).Cast<dynamic>()
                            .Where(p => p.ccc.eee == 666).Count();

以下错误:

'Newtonsoft.Json.Linq.JArray' does not contain a definition for 'eee'.

我知道,我可以迭代'resps'中的所有元素并计算元素,其中元素'ccc.eee'等于666,但是可以用linq在一行中完成它吗?

由于ccc是数组,因此需要迭代它。

计数eee = 666:

int x = ((IEnumerable<dynamic>)resps).Sum(
            p => ((IEnumerable<dynamic>)p.ccc).Count(o => o.eee == 666));

计算resp中具有至少一个eee = 666的对象数:

int x = ((IEnumerable<dynamic>)resps).Count(
            p => ((IEnumerable<dynamic>)p.ccc).Any(o => o.eee == 666));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM