【问题标题】:Cannot implicitly convert type 'IQueryable<> to IQueryable<DataRow>无法将类型 'IQueryable<> 隐式转换为 IQueryable<DataRow>
【发布时间】:2014-04-30 08:04:56
【问题描述】:

我正在尝试在 Visual Studio 2008 中使用 EDMX 编写一个简单的保存和加载操作。

这是我的加载方法:

    public static DataTable LoadData()
    {

    using (testEntities context = new testEntities())
      { 

              testEntities temp = new testEntities();
        DataTable dt = new DataTable();

       IQueryable<DataRow> empResults = (from c in temp.emplyee
                                          select c).AsQueryable();


       }


        return dt;
    }

但是我收到以下错误:

无法将类型“System.Linq.IQueryable”隐式转换为 'System.Linq.IQueryable'。显式转换 存在(您是否缺少演员表?)

我找不到此转换的任何确切链接。

【问题讨论】:

  • temp.emplyee的类型是什么?
  • 如果您使用的是 Linq-to-Entities,顺便说一下,您不需要 DataTableSqlDataAdapter
  • 我更新了我的问题

标签: asp.net entity-framework visual-studio


【解决方案1】:

试试这个

 IQueryable<DataRow> empResults = (from c in temp.emplyee
                                   select c).Cast<DataRow>().AsQueryable();

但要确保temp.emplyeeDataRow


因此,如果您使用的是 EF,则需要使用生成的模型和上下文,而不是适配器和数据表

【讨论】:

  • temp.employee 是 System.Data.Objects.ObjectQuery 。我更新了我的问题
【解决方案2】:

你不能直接投射,CopyToDataTable 应该可以帮助你:

DataTableExtensions.CopyToDataTable<T> Method (IEnumerable<T>)

http://msdn.microsoft.com/en-us/library/bb396189.aspx

或者您可以实现自定义方法来使用您实体的属性填充DataRow 列。

【讨论】:

    猜你喜欢
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 2012-02-07
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多