无法将类型 'System.Collections.Generic.List<>' 隐式转换为 'Microsoft.AspNetCore.Mvc.ActionResult<>'

Cannot implicitly convert type 'System.Collections.Generic.List<>' to 'Microsoft.AspNetCore.Mvc.ActionResult<>'

我似乎无法在我的 ASP.net Core 6 API 网络应用程序中解决这个错误。

我的httpget()

 // GET: api/Shippingschedules/shipname
        [HttpGet("{shipname}")]
        public async Task<ActionResult<Shippingschedule>> GetShippingSchedulesByShip(string shipname)
        {
            ActionResult<Shippingschedule> Shippingschedule = await _context.Shippingschedules.Where(
                x => x.Text.Contains(shipname)).ToListAsync(); //.FirstOrDefaultAsync();

            if (Shippingschedule == null)
            {
                return NotFound();
            }

            return Shippingschedule;
        }

但是如果将 ToListAsync() 替换为 FirstOrDefaultAsync(),它会编译。为什么?

我正在尝试取回它找到的所有记录,而不仅仅是第一个。我做错了什么?

谢谢

FirstOrDefaultAsync() 有效,因为它 return 只有一条记录,而 ToListAsync() return 是记录的集合。

ActionResult<Shippingschedule> 更改为 IEnumerable<ShippingSchedule> 并且 .ToListAsync() 应该可以工作。此外,将 api 的 return 类型从 Task<ActionResult<Shippingschedule>> 更改为 Task<ActionResult<IEnumerable<Shippingschedule>>>

        [HttpGet("{shipname}")]
        public async Task<ActionResult<IEnumerable<Shippingschedule>>> GetShippingSchedulesByShip(string shipname)
        {
            IEnumerable<ShippingSchedule> Shippingschedule = await _context.Shippingschedules.Where(
                x => x.Text.Contains(shipname)).ToListAsync(); //.FirstOrDefaultAsync();

            if (Shippingschedule == null)
            {
                return NotFound();
            }

            return Shippingschedule;
        }