在 C# 中,我使用 Json.net 尝试检索“buttonPress”的总和,其中“minutesStreamed”超过 60。
string json = @"
{
'results': [
{
'buttonPress': 8,
'minutesStreamed': 83
},
{
'buttonPress': 3,
'minutesStreamed': 4
},
{
'buttonPress': 7,
'minutesStreamed': 61
}
]
}";
我这样做(如下),它检索了整个列的总和,但我找不到一种方法来过滤掉 minutesStreamed > 60 的任何内容。
JObject obj = JObject.Parse(json);
var buttonPresses=
from p in obj["results"]
select (int)p["buttonPress"];
int sum = buttonPresses.Sum();
如果它正常工作,所需的输出将是 15。
这可能吗?
最佳答案
如果您使用的是 Json.NET
,您可以使用 Linq-to-JSON
执行此操作像这样
var jsonString = File.ReadAllText(@"C:\YourDirectory\results.json");
var jObj = JObject.Parse(jsonString);
var sum = jObj["results"]
.Where(r => (int)r["minutesStreamed"] > 60)
.Select(r => (int)r["buttonPress"])
.Sum();
另外,请注意您的 JSON
格式不正确,您需要像这样用逗号 ,
分隔对象的属性
{
'buttonPress': 8, <= this
'minutesStreamed': 83
}
关于c# - 使用 Json.Net 查询带有过滤器的 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33629643/