简体   繁体   English

实体框架Linq Group by DateRange

[英]Entity Framework Linq Group by DateRange

I have an application that records page visits and I need to be able to query by day by week and by month, sample output of a table query is as follows (each row represents a visit: 我有一个记录页面访问的应用程序,我需要能够按周和按月查询,表查询的示例输出如下(每行代表一次访问:

Visits result set 访问结果集

DateTimeLanding | PageViews
2016-05-12      | 2
2016-05-16      | 3
2016-05-16      | 8
2016-05-16      | 3
2016-05-17      | 7
2016-05-19      | 4
2016-05-28      | 6
2016-05-28      | 3
2016-05-30      | 1

If I want to query this result set for daily visits I do this: 如果我想查询此结果集以进行每日访问,请执行以下操作:

var visitData = visits.GroupBy(v => v.DateLanding)
                            .OrderBy(g => g.Key)
                            .Select(g => new { From = g.Key, Count = g.Count() });

                    visitNodes.Num = visits.Count().ToString();
                    visitNodes.Nodes = visitData.Select(p => new ReferralTrafficNode()
                    {
                        MetricDateTimeFrom = p.From,
                        MetricDateTimeTo = p.From.AddDays(1),
                        Value = p.Count
                    }).ToList();

This works fine for daily visits as I can group date. 这适用于每日访问,因为我可以分组日期。

How can I group the result set into groups of 7 days to get weekly visit data? 如何将结果集分组为7天组以获取每周访问数据? Essentially I need to be able to group by a date range 基本上我需要能够按日期范围进行分组

If you change your group by to this: 如果您将组更改为:

v => v.DateLanding.AddDays(-(int)v.DateLanding.DayOfWeek)

This should group by the Sunday of the week selected. 这应该按所选周的星期日分组。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM