【发布时间】:2022-01-05 08:36:47
【问题描述】:
我在下面有代码 sn-p 用于对过去 12 个月的记录进行分组,它可以正常工作,但我只是注意到不包括空月份。我哪里做错了? 提前致谢
public IQueryable<DashboardGrouping> DashboardStats()
{
var yearAgo = DateTime.Now.AddYears(-1);
var date = new DateTime(yearAgo.Year, yearAgo.Month, 1);
var items = context.Set<Transaction>()
.Where(x => x.IsActive &&
x.CreatedAt.HasValue && x.CreatedAt.Value.Date >= date.Date && x.PaymentStatusId ==
PaymentStatus.Completed)
.Include(x => x.Payment)
.Include(x => x.Branch)
.AsNoTracking()
.Select(x => new
{
Year = x.CreatedAt.Value.Year,
Month = x.CreatedAt.Value.Month,
CashAmount = x.Payment.CashAmount,
CardAmount = x.Payment.CardAmount,
})
.GroupBy(x => new
{
Year = x.Year,
Month = x.Month,
})
.Select(x => new DashboardGrouping
{
Year = x.Key.Year,
Month = x.Key.Month,
TotalSale = x.Sum(s => s.CashAmount + s.CardAmount)
});
return items;
}
【问题讨论】:
-
它需要客户端后处理。另一方面,如果您有所有月份的表,我们可以创建这样的查询。此外,您可以删除
Includes和AsNoTracking,在GroupBy或Select之后都将被忽略。 -
嗨@SvyatoslavDanyliv 我不确定你所说的整个月份的表是什么意思,但我很想知道如果我从 2021 年 5 月 1 日到今天手动生成整个月份,我该如何处理它2022 年 5 月 1 日。
标签: entity-framework entity-framework-core entity-framework-5