Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ C聚合值和时间#_C#_List_Linq - Fatal编程技术网

C# 使用LINQ C聚合值和时间#

C# 使用LINQ C聚合值和时间#,c#,list,linq,C#,List,Linq,我从API获得了以下JSON结果 [ { "ID": "1", "Value" : "10", "TimeStamp": "2019-10-21 00:00:00" }, { "ID": "1", "Value": "10", "TimeStamp": "2019-10-21 00:15:00" }, { "ID": "1",

我从API获得了以下JSON结果

[
    {
        "ID": "1",
        "Value" : "10",
        "TimeStamp": "2019-10-21 00:00:00"

    },
    {
        "ID": "1",
        "Value": "10",
        "TimeStamp": "2019-10-21 00:15:00"

    },
    {
        "ID": "1",
        "Value": "10",
        "TimeStamp": "2019-10-21 00:30:00"
    },
    {
        "ID": "1",
        "ResultValue": "10",
        "TimeStamp": "2019-10-21 00:45:00"
    },
    {
        "ID": "1",
        "Value": "10",
        "TimeStamp": "2019-10-21 01:00:00"

    },
    {
        "ID": "1",
        "Value": "10",
        "TimeStamp": "2019-10-21 01:15:00"

    },
    {
        "ID": "1",
        "Value": "10",
        "TimeStamp": "2019-10-21 01:30:00"
    },
    {
        "ID": "1",
        "Value": "10",
        "TimeStamp": "2019-10-21 01:45:00"
    },
    {
        "ID": "1",
        "Value": "0",
        "TimeStamp": "2019-10-21 02:00:00"
    }
]
我正在尝试反序列化并写入列表,然后聚合这些值

 var items = JsonConvert.DeserializeObject<List<TestData>>(JSONResult).ToList();
 var aggList = items.GroupBy(u=> new { u.ID,u.TimeStamp}).Select(g => new TestData { ID = g.Key.ID,TimeStamp = g.Key.TimeStamp ,TotalValue = g.Sum(k =>K.Value)}).ToList();

您可以同时使用
GroupBy
Date和Hour:

var aggList = items.GroupBy(u => new { u.ID, u.TimeStamp.Date, u.TimeStamp.Hour })
                            .Select(g => new TestData
                            {
                                ID = g.Key.ID,
                                TimeStamp = g.Key.Date.AddHours(g.Key.Hour),
                                Value = g.Sum(k => k.Value)
                            }).ToList();
它将为您提供以下结果:

ID : 1
TotalValue : 30
TimeStamp : 21.10.2019 00:00:00

ID : 1
TotalValue : 40
TimeStamp : 21.10.2019 01:00:00

ID : 1
TotalValue : 0
TimeStamp : 21.10.2019 02:00:00

为什么其中一个元素的ID是ResultValue而不是Value?仅按时间戳的日期部分和时间戳的小时分组。。。如果你用英语在纸上写下你想写的东西,那就很明显了。GroupBy就是你贴的代码中的一个打字错误?GroupBy use OrderBy date之前不应该是
testList
。看起来你不需要按日期分组。@Selvin谢谢你的建议。让我尝试按时间戳日期和小时进行分组。如果我的聚合值从15分钟开始,而不是从00:00开始,我如何更改查询将这些值聚合为第一个小时{“ID”:“1”,“Value”:“10”,“TimeStamp”:“2019-10-21 00:15:00”},{“ID”:“1”,“Value”:“10”,“TimeStamp”:“2019-10-21 00:30:00”},{“ID”:“1”,“结果值”:“10”,“时间戳”:“2019-10-21 00:45:00”},{“ID”:“1”,“值”:“10”,“时间戳”:“2019-10-21 01:00:00”}
ID : 1
TotalValue : 30
TimeStamp : 21.10.2019 00:00:00

ID : 1
TotalValue : 40
TimeStamp : 21.10.2019 01:00:00

ID : 1
TotalValue : 0
TimeStamp : 21.10.2019 02:00:00