我有一个 LINQ 查询,目前是这样的:
var query = from l in Records
where l.time >= time1 && l.time <= time2
select l;
但是,Records 集合过去每两秒记录一次,现在它每小时记录一次。我需要一种仅从旧数据中抓取一个记录一小时的方法,以便返回的数据更有意义,因此我不会返回每 2 秒记录的数月数据......任何帮助都会很棒。
因此,您每小时只需要一条记录。这意味着您需要按小时分组:
var query = records
.Where(r => r.time >= time1 && r.time <= time2)
.Select(r => new
{
Hour = new DateTime(r.time.Year, r.time.Month, r.time.Day, r.time.Hour, 0, 0),
Record = r
})
.GroupBy(x => x.Hour)
.Select(grp => grp.First().Record);
您应该按小时分组并为每个小时选择第一个元素。
试试这个:
var query = from l in Records
where l.time >= time1 && l.time <= time2
group l by l.time.Hour into g
select g.First();