我有一个LINQ查询,目前是这样的:
var query = from l in Records
where l.time >= time1 && l.time <= time2
select l;
但是,Records集合用于每两秒登录一次,现在每小时记录一次。我需要一种只从旧数据中获取一个记录一个小时的方法,这样返回的数据就更有意义了,所以我不会每2秒返回几个月的数据...任何帮助都会很棒。
答案 0 :(得分:4)
所以你每小时只需要一条记录。这意味着您需要按小时分组:
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);
答案 1 :(得分:1)
您应该按小时分组并选择每小时的第一个元素。
试试这个:
var query = from l in Records
where l.time >= time1 && l.time <= time2
group l by l.time.Hour into g
select g.First();