【问题标题】:LINQ query IEnumerable<Object> for IEnumerable<DataRow> results in null [duplicate]用于 IEnumerable<DataRow> 的 LINQ 查询 IEnumerable<Object> 导致 null [重复]
【发布时间】:2013-12-22 02:51:15
【问题描述】:

为什么我的 LINQ 查询(“行”)显示为空,而我似乎有大量数据(“航点”)?

我正在插入约 2 万条记录,而不是通过实体框架,我选择了 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。

【问题讨论】:

    标签: c# linq datatable sqlbulkcopy


    【解决方案1】:

    您正在尝试将IEnumerable&lt;Waypoint&gt; 类型化为IEnumerable&lt;DataRow&gt;,除非您的Waypoint 类派生自DataRow,否则这是行不通的,我认为它不是。 documentation for the CopyToDataTable method 很清楚:

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

    不幸的是,您将不得不长期制作数据表。创建一个新的空白DataTable,将列添加到它的Columns 集合,然后将行添加到它的Rows 集合。

    【讨论】:

    • 谢谢迈克尔。有时我不得不提醒自己,如果这些东西很容易,我们都会失业。
    猜你喜欢
    • 1970-01-01
    • 2012-10-05
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多