为什么我的LINQ查询(“行”)在看起来像是有大量数据(“航路点”)时显示为空?
我正在插入~20k记录,而不是通过实体框架我选择了SqlBulkCopy,这似乎意味着我需要一个数据表。我试图让IEnumerable进入IEnumberable,因为这似乎是获取CopyToDataTable()的唯一方法。
我正在复制语法in this answer,您可以在我的调试器中看到我的原始列表中有很多对象,但IEnumerable为空。
相同的代码,可能更容易阅读:
IEnumerable<DataRow> rows =
(from w in waypoints.AsEnumerable()
select w) as IEnumerable<DataRow>;
DataTable table = rows.CopyToDataTable();
“rows”变量返回null。
答案 0 :(得分:3)
您正在尝试将IEnumerable<Waypoint>
作为IEnumerable<DataRow>
进行类型转换,除非您的Waypoint
类派生自DataRow
,否则它不会起作用,我认为它不是DataTable
。 documentation for the CopyToDataTable
method非常明确:
输入参数源的参数T只能是DataRow类型或从DataRow派生的类型。
不幸的是,你将不得不让你的数据表走得更远。新建一个空白Columns
,在其Rows
集合中添加列,然后在其{{1}}集合中添加行。