System.Data.DataTableExtensions の CopyToDataTable メソッドを使用するにはどうすればよいですか?
-
06-09-2019 - |
質問
DataTableExtensions で利用可能な CopyToDataTable メソッドを使用して、List を指定してデータ テーブルを作成したいと考えています。以前にも質問させていただきましたが List を DataSet に変換するにはどうすればよいですか? そして手に入れた 例外的な答え から CMS これは、拡張機能を作成することで目的を達成することでした public static DataTable ToDataTable<T>(this IEnumerable<T> collection)
私は彼が提案したものを使用してきました...しかし最近は ブログで見た そのような拡張機能がすでに存在するとは... CopyToDataTable<T>(this IEnumerable<T> source) : DataTable
これは System.Data.DataTableExtensions に存在します。
その結果、自分でメンテナンスする必要がある拡張メソッドを使用する代わりに、この組み込みの拡張メソッドの使用に切り替える必要があると考えました。
残念ながら、使い方がわかりにくいです。
IList を取得して myListofMyClass.CopyToDataTable() と言うことができますが、「ジェネリック パラメータ 'T' として使用するには、型 'MyClass' は 'System.Data.DataRow' に変換可能である必要があります」というコンパイル エラーが発生します。方法..."
MyClass を System.Data.DataRow に変換できるようにするために何か特別なことを行う必要がありますか?実装する必要があるインターフェイスはありますか?
解決
このリンクを参照してください:
http://blogs.msdn.com/aconrad/archive/2007/09/07/science-project.aspx
基本的に、これは Linq の一部でしたが、何らかの理由で削除されました。ただし、彼のメソッドは非常に効果的ですので、ぜひチェックしてください。
他のヒント
残念ながら、 CopyToDataTable
, T
でなければなりません DataRow
(またはから派生した型 DataRow
).
(見る MSDN ドキュメント 詳細については。)
これはあなたが本当に望んでいることではありません。CopyToDataTable は、特に DataRow のコレクションを DataTable にコピーするために作成されています (DataTable は DataRow のコレクションにジャンクの束を加えたものです)。CTDT は「ジャンク」の側面を処理します。)