LINQ 查询以获取过去 30 天的记录

Posted

技术标签:

【中文标题】LINQ 查询以获取过去 30 天的记录【英文标题】:LINQ query to get records for the last 30 days 【发布时间】:2020-07-27 14:12:54 【问题描述】:

我有一个 LINQ 查询来查找过去 7 天的记录,效果很好。尽管如果我尝试使用相同的查询,但在过去 30 天内,则返回 0。谁能告诉我这是为什么?以及如何编辑查询以使其在过去 30 天内有效?

工作正常:

//calories burned working out over the last 7 days
        public int CaloriesBurnedLast7Days
        
            get
            
                using (var db = new FitnessTrackerWebAPIContext())
                
                    int calsLast7Days = 0;
                    calsLast7Days = db.Workouts.Where(w => w.Date <= DateTime.Now.AddDays(-7) && w.UserID == ID).Sum(w => w.CaloriesBurned);
                    return calsLast7Days;
                
            
        

无法正常工作:

//calories burned working out over the last 30 days
        public int CaloriesBurnedLast30Days
        
            get
            
                using (var db = new FitnessTrackerWebAPIContext())
                
                    int calsLast30Days = 0;
                    calsLast30Days = db.Workouts.Where(w => w.Date <= DateTime.Now.AddDays(-30) && w.UserID == ID).Sum(w => w.CaloriesBurned);
                    return calsLast30Days;
                
            
        

【问题讨论】:

您能否查看为第一个和第二个示例生成的原始 http 请求,例如在提琴手?它可以提供更多见解... 【参考方案1】:

我有一个 LINQ 查询来查找过去 7 天的记录,效果很好

不,您有一个查询返回超过 7 天前燃烧的卡路里(即 8、9、10 等)。您构建查询的方式,正确的方式是w.Date &gt;= DateTime.Now.AddDays(-n) 来获取最后的n 天。

【讨论】:

以上是关于LINQ 查询以获取过去 30 天的记录的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 如何从 MySQL 中选择过去 30 天的记录 [重复]

根据日期(过去 30 天)获取记录 [重复]

sql语句从数据库中获取恰好过去5天的数据

无法从 firebase 获取过去 30 天的数据

过去 30 天的平均值,不包括当前记录(混合日期和基于行的条件)

如何使用窗口函数获取每个日期值的今天、过去 7 天、过去 30 天的指标?