【问题标题】:system.linq.IQueryable does not contain a definition for 'To'system.linq.IQueryable 不包含“至”的定义
【发布时间】:2015-07-02 18:56:08
【问题描述】:

我在这段代码中遇到错误:

这是代码:

  public IHttpActionResult  Get()
    {
        var books = unit.Books.All;

        var response = books.To<BookDto>();

        return Ok(response);
    }

就在books.To()上我收到了这个错误:

system.linq.IQueryable 不包含“To”和
的定义 扩展方法“to”接受类型的第一个参数 可以找到“system.linq.IQueryable”。你错过了一个使用 指令还是程序集引用?

我看了这个但没有帮助。

IQueryable<T> does not contain a definition for 'Include' and no extension method 'Include'

我有使用 System.Data.Entity;而且我已经从 NuGet 安装了 EF,但是作为链接中的解决方案,我无法在

中获得“QueryableExtensions”
 using System.Data.Entity.QueryableExtensions

【问题讨论】:

  • 您是否尝试将 IQueryable 转换为 BookDto 列表?
  • 你认为To方法是在哪里定义的?这不是我知道的标准 EF 方法/
  • 你有一个函数叫Ok?它的签名是什么? (具体来说,它接受什么参数类型)

标签: c# entity-framework


【解决方案1】:

QueryableExtensions 似乎不包含任何名为 To 的函数,我也从未听说过这种方法,所以我怀疑你在这方面找错了树。

您可能需要以下其中一项:

  1. var response = books.ToList(); 获取图书列表

  2. var response = books.Cast&lt;BookDto&gt;();books 中的每个对象转换为BookDto

  3. var response = books.Select(book =&gt; new BookDto(book));books 构造一系列BookDto 对象,假设有合适的构造函数。

【讨论】:

    【解决方案2】:

    IQueryable.To&lt;T&gt; 不是一个东西。如果您尝试转换为其他类型,您可能需要使用Select,例如。

    var response = books.Select(book => new BookDto()); //Insert transformation logic into the new object initialization.
    

    如果您想列一个列表,那么只需这样做:

    var response = books.ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多