无法隐式转换 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()
我目前正在尝试使用 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()