EF core 在一次调用中获取计数和求和

1 c# entity-framework entity-framework-core .net-core

使用实体框架核心,我可以在一次调用中获得列数和行数的总和吗?我有以下代码,但我认为有更好的方法来做到这一点。

TotalCostResponse result = new TotalCostResponse
{
    TotalCost = await dbContext.Transaction
        .Where(x => x.UserName == request.UserName
            && x.Date >= request.StartDate
            && x.Date <= request.EndDate)
        .SumAsync(x => x.Amount),

    TotalNumber = await dbContext.Transaction
        .Where(x => x.UserName == request.UserName
            && x.Date = request.StartDate
            && x.Date <= request.EndDate)
        .CountAsync()
};
Run Code Online (Sandbox Code Playgroud)

因此,我不需要调用 dbContext 两次,而是需要在一次调用中完成它。

Ale*_*rov 5

var result = await dbContext.Transaction
    .Where(x => x.UserName == request.UserName
        && x.Date >= request.StartDate
        && x.Date <= request.EndDate)
    .GroupBy(x => 1)
    .Select(group => new TotalCostResponse
    {
        TotalCost = group.Sum(x => x.Amount),
        TotalNumber = group.Count()
    })
    .FirstOrDefaultAsync();
Run Code Online (Sandbox Code Playgroud)