如何在 ASP.NET WEB API 中按日期时间格式参数过滤数据

How to filter data by datetime format parameter in ASP.NET WEB API

我正在尝试获取基于 DateTime 参数的数据列表。但它不起作用,因为我收到错误 - AutoMapper.AutoMapperMappingException:缺少类型映射配置或不支持的映射。但是,当我尝试基于 int ID 参数检索数据时,它是 working.Any 如何解决问题的想法?

这是控制器代码:

    [HttpGet("{pubdate}")]
     public async Task<ActionResult<ToDoListDto>> GetTodListOfDates(DateTime pubdate)
          
        {
            var todo = await _toDoListRepository.GetIncomingToDoAsync(pubdate);
            if (todo == null)
            {
                return NotFound();
            }
            return Ok(_mapper.Map<ToDoListDto>(todo));
        }
    

[HttpGet("{id}")]        
    public async Task<ActionResult<ToDoListDto>> GetTodList(int id)           
    {
        var todo = await _toDoListRepository.GetSpecificTodoAsync(id);
        if (todo == null)
        {
            return NotFound();
        }

        return Ok(_mapper.Map<ToDoListDto>(todo));
    }

我的存储库代码:

    public async Task<IEnumerable<ToDoList>> GetIncomingToDoAsync(DateTime dateTime)
            {
                return await _context.ToDoLists.Where(c => c.StartDate == dateTime).ToListAsync();
            }

public async Task<ToDoList?> GetSpecificTodoAsync(int taskId)
        {
            return await _context.ToDoLists.Where(c => c.Id == taskId).FirstOrDefaultAsync();

我的待办事项模型:

public class ToDoListDto
    {
        public int Id { get; set; }
        public string? Title { get; set; }
        public string? Description { get; set; }
        public DateTime StartDate { get; set; }
     }

您的日期时间端点启动的映射正在尝试映射一个 IEnumerable<ToDoListDto>,而您的整数端点正在映射一个 ToDoListDto

如果您想单独映射集合中的每个项目(这是整数 ID 端点所做的),请将日期时间端点中的映射更改为以下内容:

return Ok(todo.Select(item => _mapper.Map<ToDoListDto>(item));

或者,如果你想映射整个集合,你必须明确并将类型指定为 IEnumerable<ToDoListDto>:

return Ok(_mapper.Map<IEnumerable<ToDoListDto>>(todo));