如何对JArray按group_pid分组并获取dataPool最大值?解决CS0021错误
解决JArray按group_pid分组并取dataPool最大值的问题
错误原因
你遇到的CS0021错误,是因为GroupBy返回的每个x是IGrouping类型的分组集合,不是单个JObject,所以不能直接用x["dataPool"]索引取值。
正确实现代码
JArray result = new JArray( jaProjects.GroupBy(item => (long)item["group_pid"]) .Select(group => new JObject( new JProperty("group_pid", group.Key), new JProperty("dataPool", group.Max(item => (long)item["dataPool"])) )) );
代码说明
GroupBy(item => (long)item["group_pid"]):将原JArray中的对象按group_pid的数值分组,每个分组的Key就是对应的group_pid值group.Max(item => (long)item["dataPool"]):遍历当前分组内的所有JObject,提取dataPool值并取最大值- 最后将每个分组的
Key(group_pid)和对应最大值包装为新的JObject,再统一存入新的JArray中,得到你期望的结果
验证结果
执行后会生成如下JArray:
[ { "group_pid": 1, "dataPool": 25000 }, { "group_pid": 0, "dataPool": 18750 } ]
内容的提问来源于stack exchange,提问作者Donald
相关产品推荐
相关产品推荐

