获取本月的所有订单
本文关键字:获取 | 更新日期: 2023-09-27 18:30:17
这是我的本月:
model.SalesForMonth = orders.Where(o => o.DateOfPayment.Value.Month == DateTime.Now.Month)
.Select(o => o.Total)
.Sum();
这并没有像预期的那样工作,因为它也在获取去年同月发生的订单。
当然,我可以比较年份和月份,但一定有一个我不熟悉的更具表现力的解决方案。
如何使用 Linq 干净利落地执行此操作?(不确定是否相关,但orders
是实体框架中的IQueryable)
最简单的方法是创建一个起点和终点:
// TODO: Consider what time zone you want to consider the current date in
var today = DateTime.Today;
var start = new DateTime(today.Year, today.Month, 1);
var end = start.AddMonths(1); // Exclusive end-point
var query = orders.Where(o => o.DateOfPayment.Value >= start &&
o.DateOfPayment.Value < end)
.Sum(o => o.Total)
我不确定你想要什么。您还必须比较年份以确保订单来自今年。我认为你可以用linq这样做:
model.SalesForMonth = orders.Where(o => (o.DateOfPayment.Value.Month == DateTime.Now.Month
&& o.DateOfPayment.Value.Year == DateTime.Now.Year))
.Select(o => o.Total)
.Sum();