C# LINQ过滤在两次和一小时之间

C# LINQ过滤在两次和一小时之间,c#,linq,C#,Linq,我有一个LINQ查询,目前是这样的: var query = from l in Records where l.time >= time1 && l.time <= time2 select l; var query=来自记录中的l 其中,l.time>=time1&&l.time您应该按小时分组,并为每个小时选择第一个元素 试试这个: var query = from l in Records

我有一个LINQ查询,目前是这样的:

var query = from l in Records
            where l.time >= time1 && l.time <= time2
            select l;
var query=来自记录中的l

其中,l.time>=time1&&l.time您应该按小时分组,并为每个小时选择第一个元素

试试这个:

var query = from l in Records
            where l.time >= time1 && l.time <= time2
            group l by l.time.Hour into g
            select g.First();
var query=来自记录中的l

其中l.time>=time1&&l.time,因此每小时只需要一条记录。这意味着您需要按小时分组:

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=记录
。其中(r=>r.time>=time1&&r.time新建
{
小时=新日期时间(r.time.Year,r.time.Month,r.time.Day,r.time.Hour,0,0),
记录=r
})
.GroupBy(x=>x.Hour)
.Select(grp=>grp.First().Record);

您能更准确地解释一下您的要求吗,因为这对我来说没有多大意义。您每小时只需要一条记录,因此此查询应该返回最近一小时内的最后一条记录,或者什么?我需要一个记录列表,所有记录都在time1和time2之间,但每小时仅一条。因此,如果time1=“09/5/2012-14:00”和time2=“09/05/2012-16:00”以及包含第1项的记录。“2012年5月9日-14:00”2、“2012年5月9日-14:30”3、“2012年5月9日-15:22”和4、“2012年5月9日-16:00”。我需要第1、3和4项。我希望这能把事情弄清楚一点。这样可以把所有的时间都集中在一个小时里。考虑OP每小时至少有一条记录。他想要每月30*24张唱片。您的查询将只返回24条记录(即使是全年)。它只支持无参数构造函数和初始值设定项。@ThomasG:您没有提到这是LINQ to Entities。无论如何,我对它不是很熟悉,但应该可以像我一样创建匿名类型。