Как использовать метод CopyToDataTable System.Data.DataTableExtensions? - PullRequest
5 голосов
/ 25 февраля 2009

Я хотел бы создать таблицу данных с использованием List, используя метод CopyToDataTable, доступный в DataTableExtensions. Ранее я задавал вопрос Как преобразовать Список в DataSet? и получил исключительный ответ от CMS , который должен был достичь того, чего я хотел создание расширения public static DataTable ToDataTable<T>(this IEnumerable<T> collection)

Я использовал то, что он предложил ... но недавно я видел в блоге , что такое расширение уже существует ... CopyToDataTable<T>(this IEnumerable<T> source) : DataTable, которое существует в System.Data.DataTableExtensions .

В результате я решил, что должен переключиться на использование этого встроенного метода расширения вместо того, чтобы использовать сам себя.

К сожалению, у меня возникли проблемы с выяснением, как его использовать.

Я могу взять свой IList и сказать myListofMyClass.CopyToDataTable (), но я получаю ошибку компиляции, которая говорит: «Тип« MyClass »должен быть преобразован в« System.Data.DataRow », чтобы использовать его в качестве параметра« T » в общем методе ... "

Есть ли что-то особенное, что мне нужно сделать MyClass, чтобы сделать его конвертируемым в System.Data.DataRow? Есть ли какой-то интерфейс, который мне нужно реализовать?

Ответы [ 3 ]

2 голосов
/ 25 февраля 2009

См. Ссылку:

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

По сути, раньше он был частью Linq, но по какой-то причине был удален. Хотя его метод отлично работает, так что проверьте его.

1 голос
/ 25 февраля 2009

Это не совсем то, что вы хотите. CopyToDataTable предназначен для копирования коллекций, в частности, DataRows, в DataTable (который является коллекцией DataRows плюс куча мусора; CTDT обрабатывает аспект «мусор»).

1 голос
/ 25 февраля 2009

Увы, для CopyToDataTable, T должно быть DataRow (или тип, полученный из DataRow).

(См. документацию MSDN для получения дополнительной информации.)

...