如何使用LINQ查询JSON数组中包含指定属性名和值的对象
你可以按如下逻辑调整LINQ语句:先从匹配到的父JObject中提取C属性对应的数组,再对数组内的对象按D属性值筛选即可,完整代码如下:
var filteredResult = json.DescendantsAndSelf() .OfType<JObject>() .First(x => x.ContainsKey("C")) ["C"] .Children<JObject>() .Where(obj => obj["D"]?.ToString() == "ValD2") .ToList();
补充说明:
- 如果你不确定JSON结构中一定存在
C字段,可以将First替换为FirstOrDefault,增加空值判断避免抛出空引用异常 - 如果
D字段可能不存在或为null,筛选条件里的空值判断obj["D"]?.ToString()可以避免空引用报错 - 如果你需要输出为格式化的JSON字符串,对最终的
filteredResult调用ToString(Formatting.Indented)即可得到你给出的期望输出格式
内容的提问来源于stack exchange,提问作者H4p7ic
相关产品推荐
相关产品推荐

