LINQ查询IEnumerable <object> for IEnumerable <datarow>结果为null </datarow> </object>

时间:2013-12-21 18:39:52

标签: c# linq datatable sqlbulkcopy

为什么我的LINQ查询(“行”)在看起来像是有大量数据(“航路点”)时显示为空?

我正在插入~20k记录,而不是通过实体框架我选择了SqlBulkCopy,这似乎意味着我需要一个数据表。我试图让IEnumerable进入IEnumberable,因为这似乎是获取CopyToDataTable()的唯一方法。

我正在复制语法in this answer,您可以在我的调试器中看到我的原始列表中有很多对象,但IEnumerable为空。

enter image description here

相同的代码,可能更容易阅读:

    IEnumerable<DataRow> rows =
            (from w in waypoints.AsEnumerable()
            select w)  as IEnumerable<DataRow>;

    DataTable table = rows.CopyToDataTable();

“rows”变量返回null。

1 个答案:

答案 0 :(得分:3)

您正在尝试将IEnumerable<Waypoint>作为IEnumerable<DataRow>进行类型转换,除非您的Waypoint类派生自DataRow,否则它不会起作用,我认为它不是DataTabledocumentation for the CopyToDataTable method非常明确:

  

输入参数源的参数T只能是DataRow类型或从DataRow派生的类型。

不幸的是,你将不得不让你的数据表走得更远。新建一个空白Columns,在其Rows集合中添加列,然后在其{{1}}集合中添加行。