我想使用DataTableExtensions中提供的CopyToDataTable方法创建一个给定List的数据表。我之前已经问过How do I transform a List into a DataSet?这个问题并从exceptional answer获得了CMS,这是通过创建扩展程序实现我想要的public static DataTable ToDataTable<T>(this IEnumerable<T> collection)
我一直在使用他的建议......但最近我seen in a blog已经存在System.Data.DataTableExtensions中存在的扩展名CopyToDataTable<T>(this IEnumerable<T> source) : DataTable
。
因此,我认为我应该切换到使用这种内置的扩展方法,而不是使用我必须维护的方法。
不幸的是,我在弄清楚如何使用它时遇到了一些麻烦。
我可以使用我的IList并说myListofMyClass.CopyToDataTable()但是我得到一个编译错误,说“类型'MyClass'必须可以转换为'System.Data.DataRow'才能将它用作参数'T'在通用方法中......“
为了使其可以转换为System.Data.DataRow,我需要做一些特别的事情吗MyClass吗?我需要实现一些接口吗?
答案 0 :(得分:2)
请看这个链接:
http://blogs.msdn.com/aconrad/archive/2007/09/07/science-project.aspx
基本上,它曾经是Linq的一部分,但由于某种原因它被删除了。他的方法确实很好用,所以检查一下。
答案 1 :(得分:1)
唉,对于CopyToDataTable
,T
必须是DataRow
(或来自DataRow
的类型)。
(有关详细信息,请参阅the MSDN documentation。)
答案 2 :(得分:1)
这不是你想要的。 CopyToDataTable用于将特定于DataRows的集合复制到DataTable(这是DataRows的集合,加上一堆垃圾; CTDT处理“垃圾”方面。)