gpt4 book ai didi

c# - 使用 LINQ 创建数据区间

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:32 25 4
gpt4 key购买 nike

我在 C# 中遇到一个问题,我不知道如何解决:

我有一组数据,其中包含一个时间戳和一个值。这是一个示例数据集:

<Timestamp>2014-01-06T17:40:08.000Z</TimeStamp>
<Value>200</Value>
<Timestamp>2014-01-06T17:40:09.000Z</TimeStamp>
<Value>234</Value>
<Timestamp>2014-01-06T17:40:11.000Z</TimeStamp>
<Value>214</Value>
<Timestamp>2014-01-06T17:40:12.000Z</TimeStamp>
<Value>264</Value>
<Timestamp>2014-01-06T17:40:13.000Z</TimeStamp>
<Value>300</Value>
<Timestamp>2014-01-06T17:40:15.000Z</TimeStamp>
<Value>276</Value>

我需要做的是以某种方式每 30 秒获取一次值的平均值。请注意,数据记录不一定是每秒一次。这就是让我难以想象如何在没有不安全结果的情况下做到这一点的原因。

这是否可以通过 LINQ 语句实现,或者您有其他建议吗?

最佳答案

假设您可以弄清楚如何解析 XML,并且您有一组包含 TimeValue 的对象。例如,我将使用这个集合:

var now = DateTime.Now;
var random = new Random();
var times = Enumerable.Range(1, 10000).Select(i => new
{
Time = now.AddHours(random .NextDouble()),
Value = i
});

使用辅助方法 DateTime RoundUp(DateTime dt, TimeSpan d) , 和 GroupBy :

var interval = TimeSpan.FromSeconds(30);
var intervalAverageValues =
times.GroupBy(t => RoundUp(t.Time, interval))
.Select(g => new
{
AverageValue = g.Average(t => t.Value),
IntervalEndTime = g.Key,
Count = g.Count()
});

关于c# - 使用 LINQ 创建数据区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21258167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com