2009-02-25 38 views
5

我想使用DataTableExtensions中提供的CopyToDataTable方法創建一個給定List的數據表。我以前問的問題How do I transform a List into a DataSet?並得到了CMSexceptional answer這是實現通過創建一個擴展public static DataTable ToDataTable<T>(this IEnumerable<T> collection)如何使用System.Data.DataTableExtensions的CopyToDataTable方法?

我一直在使用他的提議......但最近我seen in a blog有已經是我想要的存在這樣的擴展名... CopyToDataTable<T>(this IEnumerable<T> source) : DataTable它存在於System.Data.DataTableExtensions中。

因此,我想我應該切換到使用這種內置的擴展方法,而不是使用我必須維護自己的擴展方法。

不幸的是,我在計算如何使用它時遇到了一些麻煩。

我可以帶我的IList並說myListofMyClass.CopyToDataTable(),但我得到一個編譯錯誤,說「類型'MyClass'必須可以轉換爲'System.Data.DataRow'爲了使用它作爲參數'T '在通用方法...「

是否有什麼特殊的我需要做的MyClass爲了使它可以轉換爲System.Data.DataRow?有一些我需要實現的接口嗎?

回答

2

請參閱此鏈接(這是數據行的集合,再加上一堆垃圾CTDT處理「垃圾」的方面。):

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

基本上,它曾經是Linq的一部分,但由於某種原因它被刪除。他的方法確實很好,所以請檢查一下。

+0

我已經與這個答案走了,因爲它最接近我想要的。我不認爲我會使用這種解決方案......但至少它回答了我爲什麼我不能使用它的問題,因爲他們放棄了這個功能,而博客文章是在測試日後回來的...... – mezoid 2009-03-01 21:09:56

1

唉,對於CopyToDataTable,T必須是DataRow(或從DataRow派生的類型)。

(有關詳細信息,請參閱the MSDN documentation。)

+0

*嘆*我希望情況並非如此。我已經閱讀了MSDN文檔,但並沒有完全理解它絕對必須是DataRow或派生自DataRow的事實... – mezoid 2009-02-25 00:44:36

1

這是不是真的,你想要什麼。 CopyToDataTable被用於複製具體的數據行集合到一個DataTable作出;

相關問題