javascript - 无法隐式转换 System.LINQ 存在显式转换您是否缺少演员表
问题描述
我目前正在尝试使用 API 搜索查询实现 TypeAhead 插件。下面的代码是我从 udemy 类 Mosh ( https://github.com/mosh-hamedani/vidly-mvc-5/blob/master/Vidly/Controllers/Api/CustomersController.cs ) 收到的代码片段。实施以下代码后,我收到错误
无法将类型“System.Linq.Iqueryable”隐式转换为 System.Data.Entity.DbSet”。存在显式转换(您是否缺少演员表)?
这发生在这行代码上
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;
这是因为如果使用实体框架,上下文可能是 DbSet。
你也可以把_context.VMRS.AsQueryable()
推荐阅读
- python - 使用 seaborn 的部分多重阴影图
- python - 将列中的 0 替换为 pandas 中的 groupby 中位数
- memory-management - (DX12) 2D-Texture UAV 的回读缓冲区
- postgresql - postgresql 插入整数 PK nextval
- angular - 角度,参考变量不刷新
- excel - 性能问题 - 根据列标题重新排列列
- swift - SwiftUI 中的切换调用问题中的额外参数“isOn”
- angular - Ionic- ionic serve 显示空白屏幕 Ionic- 关键“viewport-fit”未被识别和忽略
- c - 多文件c项目中的函数声明问题
- r - 如何将复杂的宽表转换为长表