gpt4 book ai didi

c# - Entity Framework 按月分组

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:24 25 4
gpt4 key购买 nike

我正在尝试从每个月的 16 号到下个月的 15 号进行分组。

使用 Entity Framework 或 linq 有可能吗?

var result = await db.Orders.Where(o => o.OrderDate > date)
.GroupBy(...)
.ToListAsync();

最佳答案

要使此功能与 EF 和 SQL 一起使用,您只需执行一些日期数学运算来计算用于分组的“期间”数字。基本上,您将每个日期转换为月份,偏移 16 日,再加上年份的偏移量:

var result = await db.Orders.Where(o => o.OrderDate > date)
.GroupBy(o => o.OrderDate.Month + 12*(o.OrderDate.Year - date.Year) - (o.OrderDate.Day >= 16 ? 0 : 1))
.ToListAsync();

根据@stuartd,这里是如何取回每组的经期:

var resultp = result.Select(r => new {
PeriodBegin = new DateTime(date.Year + r.Key / 12 - (r.Key % 12 == 0 ? 1 : 0), r.Key % 12 == 0 ? 12 : r.key % 12, 16),
PeriodEnd = new DateTime(date.Year + r.Key / 12, r.Key % 12 + 1, 15),
Orders = r.ToList()
}).ToList();

关于c# - Entity Framework 按月分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54203862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com