我有一个场景喜欢根据时间过滤记录。那是 5 秒范围内的第一条记录。
示例:
输入数据:
data timings
1452 10:00:11
1455 10:00:11
1252 10:00:13
1952 10:00:15
1454 10:00:17
1451 10:00:19
1425 10:00:20
1425 10:00:21
1459 10:00:23
1422 10:00:24
预期输出
1452 10:00:11
1454 10:00:17
1459 10:00:23
我尝试根据如下时间对数据进行分组
listSpacialRecords=listSpacialRecords.GroupBy(x => x.timings).Select(x => x.FirstOrDefault()).ToList();
但是使用这个我只能同时过滤数据。 希望有人能帮我解决这个问题 列表包含大量数据,那么除了循环列表之外还有什么办法吗?
最佳答案
这对我有用:
var results =
source
.Skip(1)
.Aggregate(
source.Take(1).ToList(),
(a, x) =>
{
if (x.timings.Subtract(a.Last().timings).TotalSeconds >= 5.0)
{
a.Add(x);
}
return a;
});
我得到了你想要的输出。
关于c# - 使用时间戳过滤 c# 列表,每 5 秒获取第一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47788378/