无法隐式转换 System.LINQ 是否存在显式转换是否缺少强制转换

cannot implicitly convert System.LINQ an explicit conversion exists are you missing a cast

我目前正在尝试使用 API 搜索查询来实现 TypeAhead 插件。下面的代码是我从 udemy class Mosh (https://github.com/mosh-hamedani/vidly-mvc-5/blob/master/Vidly/Controllers/Api/CustomersController.cs) 那里收到的一个片段。实施以下代码后,我收到

的错误

Cannot implicitly convert type 'System.Linq.Iqueryable' to System.Data.Entity.DbSet'. An Explicit conversion exists (are you missing a cast)?

这发生在这行代码上

vmrsQuery = vmrsQuery.Where(c => c.Description.Contains(query));

是否有其他人有解决方法来使其正常运行?

public IHttpActionResult GetVMRS(string query = null)
    {

        var vmrsQuery = _context.VMRS;

        if (!String.IsNullOrWhiteSpace(query))
            vmrsQuery = vmrsQuery.ToList().Where(c => c.Description.Contains(query));

        var vmrsDtos = vmrsQuery
            .ToList()
            .Select(Mapper.Map<VMRS, VMRSDto>);

        return Ok(vmrsDtos);
    }

您不应直接在上下文中调用 ToList()。这将在执行 where 子句之前将数据库中的每一行拉入内存。

vmrsQuery = vmrsQuery.ToList().Where(c => c.Description.Contains(query));

应该是

vmrsQuery = vmrsQuery.Where(c => c.Description.Contains(query));

此外,您可能需要明确定义变量。

var vmrsQuery = _context.VMRS;

应该是

IQueryable<VMRS> vmrsQuery = _context.VMRS;

这是因为如果使用 Entity Framework,上下文可能是一个 DbSet。

你也可以只输入 _context.VMRS.AsQueryable()