首页 > 解决方案 > 通过在实体框架中按月份分组来获取总金额

问题描述

我需要在实体框架中编写一个 SQL 查询,以便以数组格式获取总费用金额(即我需要按月对金额进行分组)。

我试过这个实体框架查询,但没有成功:

double[] Amountdate;

using (IncomeExpenseManagementDBEntities incomeExpenseManagementDB = new IncomeExpenseManagementDBEntities())
{
    Amountdate = incomeExpenseManagementDB
                     .Expenses
                     .Select(e => e.Amount)
                     .Where(e => e.userID == IncomeExpenseTool.user.Id)
                     .GroupBy(e => e.Date.Month);
}

感谢对此的任何投入

标签: c#.netentity-framework

解决方案


您需要最后执行 Select,然后您需要通过求和来聚合值。

var amountsByMonth = incomeExpenseManagementDB.Expenses
    .Where(e => e.userID == IncomeExpenseTool.user.Id)
    .GroupBy(e => e.Date.Month)
    .Select(grp => new 
    { 
        Month = grp.Key, 
        TotalAmount = grp.Sum(x => x.Amount) 
    })
    .ToList();

这将导致您的数据库中表示的每个月的金额总和(换句话说,如果您没有 3 月份的数据,您将不会得到 3 月份的结果)。


推荐阅读