首页 > 解决方案 > 使用 linq 和实体框架核心 5 从数据库中的不连续数据创建具有连续日期的报告

问题描述

我需要从我的数据库中的一些数据构建一个报告。它是代表我们系统中每天收入的项目列表。我们的数据每小时存储一次,因此使用日期时间的日期部分分组。这里是查询:

dateDataQuery = query.GroupBy(o => new {o.Time.Month, o.Time.Year, o.Time.Day})
    .OrderBy(o => o.Key.Year).ThenBy(o => o.Key.Month).ThenBy(o => o.Key.Day)
    .Select(g => new StatData()
    {
        Day = g.Key.Day,
        Month = g.Key.Month,
        Income = g.Sum(o => o.Income),
    });

这可以正常工作,但问题是如果我们有一天没有交易,那么这一天的数据库中不会有任何记录,因此这一天的 StatData 对象不会出现在结果中。

这是一个问题,因为这些数据将在我们前端的图表中表示,并且需要是连续的。我的意思是,一天决议中的每个日期都必须出现在结果中,至少收入为 0。

那么,是否有可能使用实体框架核心和 linq 来执行此操作,而无需检查所有返回的数据,并手动检查日期是否存在?

标签: c#linqasp.net-coreentity-framework-core

解决方案


推荐阅读