You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core 6 Web API中获取年度销售总额?

重写代码获取年度交易销售总额

原代码存在两个可优化的问题:一是将全表数据加载到内存后再过滤计算,数据量大时性能低下;二是通过字符串截取日期判断月份,容易因日期格式差异出现错误。针对获取年度销售总额的需求,我们可以直接利用EF Core的查询能力在数据库层面完成过滤与聚合,同时规避字符串操作的风险。

基础版本(当前年度总额)

private async Task<decimal> GetTotalAnnualSales()
{
    int currentYear = DateTime.Now.Year;
    return await _dbContext.Sales
        .Where(sale => sale.CreatedAt.Year == currentYear)
        .SumAsync(sale => sale.Amount);
}

扩展版本(支持指定年份)

如果需要查询任意年份的销售总额,可以添加重载方法:

private async Task<decimal> GetTotalAnnualSales(int targetYear)
{
    return await _dbContext.Sales
        .Where(sale => sale.CreatedAt.Year == targetYear)
        .SumAsync(sale => sale.Amount);
}

核心改动说明

  • 直接使用DateTime.Now.Year获取当前年份的整数,避免字符串处理可能导致的格式错误
  • 借助EF Core的Where和SumAsync方法,让数据库执行过滤与求和操作,无需加载全表数据,性能大幅提升
  • 代码逻辑更简洁,减少了临时变量与循环的冗余

内容的提问来源于stack exchange,提问作者Ayobamilaye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 06:45:36