2009-02-25 2 views
5

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

Я использовал то, что он предложил ... но в последнее время я 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

Смотрите эту ссылку (которая представляет собой набор DataRows, плюс куча барахла ЦИРП обрабатывает «вредную» аспект.):

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

В принципе, он раньше был частью Linq, но по какой-то причине он был удален. Его метод там отлично работает, поэтому проверьте его.

+0

Я пошел с этим ответом, потому что он был ближе всего к тому, что я хотел. Я не думаю, что я буду использовать эти решения ... но, по крайней мере, он отвечает на мой вопрос о том, почему я не мог использовать его, так как они отказались от этой функции, а сообщение в блоге было обратно в бета-дни ... – mezoid

+0

Вы не будете использовать это? Мы добавили его в нашу структуру на работе (наряду с нулевым исправлением, которое вы найдете в одном из комментариев на этом блоге), и это действительно отлично работает. – BFree

1

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

(см the MSDN documentation для получения дополнительной информации.)

+0

* вздох * Я надеялся, что это не так. Я прочитал этот документ MSDN, но не совсем понял, что это абсолютно должен быть DataRow или что-то, происходящее из DataRow ... – mezoid

1

Это не совсем то, что вы хотите. CopyToDataTable производится для копирования коллекций конкретно DataRows в DataTable,

Смежные вопросы