首页 > 解决方案 > 使用 GroupBy Id 选择 ASP NET CORE 实体框架

问题描述

我建立了一个服务来调用这样的查询

select quotaId, sum(quota)
From leaveQuota
group by quotaId

我在总和和组中遇到问题。如何在实体框架中做到这一点我试过这个

public async Task<List<LeaveTypeModel>> GetLeaveQuota(string employeeId)
{
  var leaveQuota = await DB.EmployeeLeaveQuota
    .Where(Q => Q.EmployeeId == employeeId && Q.ValidUntil >= DateTime.UtcNow)
    .Select(Q => new LeaveTypeModel
    {
        EmployeeLeaveQuotaTypeId = Q.EmployeeLeaveQuotaTypeId,
        QuotaDays = Q.QuotaDays
    })
    .ToListAsync();

    return leaveQuota;
  }

我的模型

public class LeaveTypeModel
{
    public int EmployeeLeaveQuotaTypeId { set; get; }
    public int QuotaDays { set; get; }
}

如果我使用.GroupBy我不能将它作为我的模型返回,我不知道总结我的配额日列

我知道这是一个基本查询,但我还不熟悉实体框架和 asp.net 核心来返回其数据

标签: asp.netentity-frameworklinqgroup-by

解决方案


var leaveQuota = await DB.EmployeeLeaveQuota
    .Where(Q => Q.EmployeeId == employeeId && Q.ValidUntil >= DateTime.UtcNow)
    .GroupBy(x => x.EmployeeLeaveQuotaTypeId).Select(x => 
    new LeaveTypeModel
    {
        EmployeeLeaveQuotaTypeId = x.Key,
        QuotaDays = x.Sum(y => y.QuotaDays)
    }).ToListAsync();

推荐阅读