【问题标题】:How do I use System.Data.DataTableExtensions' CopyToDataTable method?如何使用 System.Data.DataTableExtensions 的 CopyToDataTable 方法?
【发布时间】:2009-02-25 00:33:33
【问题描述】:

我想使用 DataTableExtensions 中可用的 CopyToDataTable 方法创建一个给定列表的数据表。我之前问过How do I transform a List into a DataSet? 的问题,并从CMS 得到了exceptional answer,这是通过创建扩展public static DataTable ToDataTable<T>(this IEnumerable<T> collection) 来实现我想要的

我一直在使用他的建议...但最近我seen in a blog 已经存在这样的扩展...CopyToDataTable<T>(this IEnumerable<T> source) : DataTable 存在于 System.Data.DataTableExtensions 中。

因此,我认为我应该改用这种内置的扩展方法,而不是使用我必须自己维护的方法。

很遗憾,我在弄清楚如何使用它时遇到了一些麻烦。

我可以使用我的 IList 并说 myListofMyClass.CopyToDataTable(),但我收到一个编译错误,提示“类型 'MyClass' 必须可转换为 'System.Data.DataRow' 才能将其用作参数 'T'在泛型方法中..."

为了使其可转换为 System.Data.DataRow,我需要做一些特别的事情吗?我需要实现一些接口吗?

【问题讨论】:

    标签: c# datatable generic-list


    【解决方案1】:

    查看此链接:

    http://blogs.msdn.com/aconrad/archive/2007/09/07/science-project.aspx

    基本上,它曾经是 Linq 的一部分,但由于某种原因它被删除了。不过,他的方法确实很有效,所以请检查一下。

    【讨论】:

    • 我选择了这个答案,因为它最接近我想要的。我不认为我会使用这个解决方案......但至少它回答了我关于为什么我不能使用它的问题,因为他们放弃了该功能并且博客文章来自测试版......跨度>
    • 你为什么不用这个?我们在工作中将它添加到我们的框架中(以及您可以在该博客文章的其中一个 cmets 中找到的 null 修复),它确实非常有效。
    【解决方案2】:

    唉,对于 CopyToDataTableT 必须是 DataRow(或从 DataRow 派生的类型)。

    (有关详细信息,请参阅the MSDN documentation。)

    【讨论】:

    • sigh 我希望不是这样。我已经阅读了 MSDN 文档,但并没有完全理解它绝对必须是 DataRow 或从 DataRow 派生的东西......
    【解决方案3】:

    这并不是你真正想要的。 CopyToDataTable 用于将特定的 DataRows 集合复制到 DataTable 中(这是 DataRows 的集合,加上一堆垃圾;CTDT 处理“垃圾”方面。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      • 2012-10-05
      相关资源
      最近更新 更多