gpt4 book ai didi

c# - 如何使用 LINQ to SQL 对时间序列中的数据进行子采样?

转载 作者:行者123 更新时间:2023-11-30 21:21:42 24 4
gpt4 key购买 nike

我有一个数据库表,里面全是时间点和这些时间点的实验值。我需要检索实验值并创建显示其数据的 XY 图的缩略图。因为每个实验的实际数据集可能有 100,000 个数据点,而我的图像只有 100 像素宽,所以我想通过对我的图像每隔 n 个时间点进行采样并忽略其余时间点来对数据进行采样。

我当前的查询(无需采样即可检索所有数据)像这样简单:

var points = from p in db.DataPoints
where p.ExperimentId == myExperimentId
orderby p.Time
select new {
X = p.Time,
Y = p.Value
}

那么,在 LINQ to SQL 查询中如何最好地从我的结果集中获取第 n 个点?

最佳答案

这将执行每第 n 个元素:

int nth = 100;
var points = db.DataPoints
.Where(p => p.ExperimentId == myExperimentId)
.OrderBy(p => p.Time)
.Where( (p, index) => index % nth == 0 )
.Select( p => new { X = p.Time, Y = p.Value } );

它通过使用 Queryable.Where 来工作提供序列中索引的重载,因此您可以根据索引进行过滤。

关于c# - 如何使用 LINQ to SQL 对时间序列中的数据进行子采样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2609084/

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