我有一个ASP .NETCoreMVC应用程序,它包含两个实体:Employee
和Task
。这些实体具有一对多关系。Task
由一个受让人(被指派处理它的Employee
)和一个到期日以及其他属性组成。
我需要显示上个月完成任务数最多的5名员工。
我尝试了以下方法:
public async Task<IActionResult> Display()
{
int current_month = DateTime.Now.Month;
var employees = _context.Employees
.Include(t => t.EmployeeTasks)
.OrderByDescending(x =>
x.EmployeeTasks.Count(x => x.DueDate.Month == current_month - 1))
.Take(5);
return View(employees);
}
此查询无法正常工作,就好像它无法识别条件一样
此查询无法正常工作-似乎无法识别条件DueDate.Month == current_month - 1
.
有人知道如何更正此查询吗?
1条答案
按热度按时间brgchamk1#
使用current_month变量按到期日筛选任务可能会导致查询问题。如果当前月份是January(值为1),则从current_month中减去1可能不会始终得到预期结果。
若要解决此问题,可以使用DateTime属性Month和Year修改查询,以根据任务的到期日期筛选任务。使用以下查询,可以筛选在上个月到期的任务