使用 Json.Net 使用过滤器查询 Json

Joh*_*n H 1 c# json json.net

在 C# 中,我使用 Json.net 尝试检索“buttonPress”的总和,其中“minutesStreamed”超过 60。

string json = @"
{
    'results': [
    {
        'buttonPress': 8,
        'minutesStreamed': 83
    },
    {
        'buttonPress': 3,
        'minutesStreamed': 4
    },
    {
        'buttonPress': 7,
        'minutesStreamed': 61
    }
        ]
    }";
Run Code Online (Sandbox Code Playgroud)

我做了这个(下面)它检索了整个列的总和,但我找不到一种方法来过滤掉minutesStreamed> 60的任何内容。

JObject obj = JObject.Parse(json);
var buttonPresses=
    from p in obj["results"]
    select (int)p["buttonPress"];

int sum = buttonPresses.Sum();
Run Code Online (Sandbox Code Playgroud)

如果工作正常,所需的输出将为 15。

这甚至可能吗?

Arg*_*a C 5

如果你正在使用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();
Run Code Online (Sandbox Code Playgroud)

另外,请注意您JSON的格式不正确,您需要,像这样用逗号分隔对象的属性

{
    'buttonPress': 8, <= this
    'minutesStreamed': 83
}
Run Code Online (Sandbox Code Playgroud)