2009-02-25 24 views
5

Me gustaría crear una tabla de datos con una lista usando el método CopyToDataTable disponible en DataTableExtensions. Anteriormente he hecho la pregunta How do I transform a List into a DataSet? y tengo una exceptional answer de CMS que era para conseguir lo que quería mediante la creación de una extensión public static DataTable ToDataTable<T>(this IEnumerable<T> collection)¿Cómo uso el método CopyToDataTable de System.Data.DataTableExtensions?

He estado usando lo que sugiere ... pero recientemente he seen in a blog que ya existe una extensión ... CopyToDataTable<T>(this IEnumerable<T> source) : DataTable que existe en System.Data.DataTableExtensions.

Como resultado, me imagino que debería cambiar a usar este método de extensión incorporado en lugar de usar uno que yo tendría que mantener.

Desafortunadamente, estoy teniendo problemas para encontrar la manera de usarlo.

puedo llevar a mi IList y decir myListofMyClass.CopyToDataTable() pero me da un error de compilación que dice: "El tipo 'MiClase' debe ser convertible en 'System.Data.DataRow' con el fin de utilizarlo como parámetro 'T 'en el método genérico ...'

¿Hay algo especial que necesite para hacer MyClass para poder convertirlo a System.Data.DataRow? ¿Hay alguna interfaz que necesito implementar?

Respuesta

2

ver este enlace (que es una colección de DataRows, además de un montón de basura CTDT maneja el aspecto de "basura".):

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

Básicamente, solía ser parte de Linq, pero por alguna razón se eliminó. Su método no funciona muy bien, así que échale un vistazo.

+0

Me he ido con esta respuesta porque es la más cercana a lo que quería. No creo que use estas soluciones ... pero al menos responde mi pregunta acerca de por qué no podía usarlo, ya que abandonaron la función y la publicación del blog fue desde atrás en los días beta ... – mezoid

+0

¿Por qué? ¿No usarás esto? Lo agregamos a nuestro marco en el trabajo (junto con la corrección nula que encontrará en uno de los comentarios en esa publicación de blog) y realmente funciona de maravilla. – BFree

1

Por desgracia, para CopyToDataTable, T debe ser DataRow (o un tipo derivado de DataRow).

(Ver the MSDN documentation para obtener más información.)

+0

* suspiro * Esperaba que ese no fuera el caso. Había leído ese documento de MSDN pero no entendía el hecho de que tenía que ser un DataRow o algo derivado de DataRow ... – mezoid

1

Esto no es realmente lo que quieres. CopyToDataTable se hace para copiar colecciones específicamente de DataRows en un DataTable;

Cuestiones relacionadas