2009-02-25 14 views
5

DataTableExtensionsで使用できるCopyToDataTableメソッドを使用して、リストを指定してデータテーブルを作成したいとします。私は以前質問How do I transform a List into a DataSet?を頼み、持っている私は彼が提案してきたものを使用して...しかし、最近私はすでにというseen in a blogがきた拡張public static DataTable ToDataTable<T>(this IEnumerable<T> collection)System.Data.DataTableExtensionsのCopyToDataTableメソッドはどのように使用しますか?

を作成することで、私が欲しかったものを達成することであったCMSからexceptional answerそのような拡張子が存在します。CopyToDataTable<T>(this IEnumerable<T> source) : DataTableこれはSystem.Data.DataTableExtensionsに存在します。

結果として、私は自分自身を維持しなければならないものを使用する代わりに、このinbuilt拡張メソッドを使用するように切り替えるべきだと考えています。

残念ながら、私はそれを使用する方法を考え出すのに少し問題があります。

私はIListをとり、myListofMyClass.CopyToDataTable()を呼び出すことができますが、「型 'MyClass'を 'System.Data.DataRow'に変換してパラメータ 'T'として使用する必要があるというコンパイルエラーが発生します'一般的なメソッドで... "

MyClassをSystem.Data.DataRowに変換できるようにするために特別なことがありますか?私は実装する必要があるいくつかのインターフェイスはありますか?

答えて

2

このリンクを参照してください:

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

基本的には、Linqに参加していましたが、なんらかの理由で削除されました。彼の方法は素晴らしいですが、それをチェックしてください。

+0

私はこの答えに行ってきました。私はこのソリューションを使うつもりはないと思っています...しかし、少なくとも、それは機能を落として以来、なぜ私がそれを使うことができなかったのかという私の質問に答えるもので、ブログ投稿はベータ時代から戻ってきました... – mezoid

+0

なぜあなたはこれを使わないでしょうか?我々はそれを私たちのフレームワークに加えました(あなたがそのブログ記事のコメントの1つで見つかるヌル修正と一緒に)、それは本当に素晴らしいです。 – BFree

1

残念なことには、CopyToDataTableため、TDataRow(又はDataRowから誘導型)でなければなりません。

(詳細はthe MSDN documentationを参照してください。)

+0

* sigh *私はそうではないと思っていました。私はそのMSDNのドキュメントを読んでいましたが、DataRowやDataRowから派生したものでなければならないという事実にはほとんど気づいていませんでした。 – mezoid

1

これは、あなたが望むもの、本当にありません。 CopyToDataTableは、DataTableのに特別でDataRowのコレクションをコピーするために作られている(。でDataRowのコレクションに加え、ジャンクの束であり、CTDTは「ジャンク」側面を扱う)

関連する問題