【问题标题】:LINQ query to DataTable type errorLINQ 查询到 DataTable 类型错误
【发布时间】:2011-06-30 13:37:55
【问题描述】:

我在数据访问层中有以下功能,但我在 RETURN 语句中收到以下错误。

方法的类型参数 'System.Data.DataTableExtensions.CopyToDataTable(System.Collections.Generic.IEnumerable)' 不能从用法中推断出来。尝试 指定类型参数 明确的

我的代码是:

DL.FVRGDataContext db = new FVRGDataContext();

public DataTable getRestaurants(string cuisineName)
{
   var cuisineIdFind = from CUISINE in db.CUISINEs
                       where CUISINE.CUISINE_NAME == cuisineName
                       select CUISINE.CUISINE_ID;

   var restaurantList = from RESTAURANT in db.RESTAURANTs
                        where RESTAURANT.CUISINE_ID == 2
                        orderby RESTAURANT.REST_NAME ascending
                        select i;

   DataTable result = new DataTable();
   result = restaurantList.CopyToDataTable();

   return result;
}

【问题讨论】:

  • 我很惊讶 restaurantList 分配没有失败 - 你在这里选择的 i 是什么?
  • 到底为什么你会使用 LINQ 获取Restaurant 的列表,然后将其转换回笨拙的、难以使用的DataTable ... .. 对我来说根本没有任何意义 - 但这只是我......

标签: asp.net linq datatable types


【解决方案1】:

CopyToDataTable 不能这样工作...它有一个通用参数T,其中T 必须是DataRow 的子类。也就是说CopyToDataTable不能用于将任意集合转换为DataTable,集合的项必须是DataRows本身。

在您的情况下,CUISINERESTAURANT 似乎是 Linq to SQL 或实体框架实体,而不是 DataRows,因此它无法工作。

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多