javascript - 无法隐式转换 System.LINQ 存在显式转换 如果您缺少强制转换

标签 javascript api model-view-controller typeahead.js

我目前正在尝试使用 API 搜索查询来实现 TypeAhead 插件。下面的代码是我从 udemy 类 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()

关于javascript - 无法隐式转换 System.LINQ 存在显式转换 如果您缺少强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59547174/

相关文章:

javascript - 为什么 javascript 的警报显示数组和对象的奇怪值?

javascript - 将问答与 React 相匹配?

javascript - Yii2 从 js 脚本在页面上的 vendor 文件夹中添加图像、css、js 文件

javascript - Angularjs $http 无法从 Asp.net webapi 4 获取数据

iphone - 如何从 iPhone 应用程序邀请 Facebook 好友?

java - 创建名称为 'tilesViewResolver' 的 bean 时出错

php - CakePHP API Blackhole - validatePost 禁用不起作用?

javascript - javascript代码首先使用setTimeout可以工作,但随后崩溃还是不起作用?

c# - 从 Controller 调用服务是否违反了 MVC?

c# - MVC C# web 服务连接两个表并合并输出