2009-02-25 12 views
5

Ich möchte eine Datentabelle erstellen, die eine List mit der CopyToDataTable-Methode in DataTableExtensions angegeben wird. Ich habe gefragt, vorher die Frage How do I transform a List into a DataSet? und bekam eine exceptional answer von CMS das erreichen war, was ich durch die Schaffung einer Erweiterung public static DataTable ToDataTable<T>(this IEnumerable<T> collection)Wie verwende ich die CopyToDataTable-Methode von System.Data.DataTableExtensions?

Ich habe mit, was er vorschlug, wollte ... aber ich habe vor kurzem seen in a blog, dass es bereits existiert eine solche Erweiterung ... CopyToDataTable<T>(this IEnumerable<T> source) : DataTable die in System.Data.DataTableExtensions existiert.

Als Ergebnis, ich denke, ich sollte auf die Verwendung dieser eingebauten Erweiterungsmethode wechseln, statt eine, die ich selbst pflegen müsste.

Leider habe ich ein wenig Mühe herauszufinden, wie man es benutzt.

Ich kann meine IList nehmen und myListofMyClass.CopyToDataTable() sagen, aber ich bekomme einen Kompilierfehler, der besagt "Der Typ 'MyClass' muss in 'System.Data.DataRow' konvertiert werden können, um es als Parameter 'T zu verwenden 'in der generischen Methode ... "

Gibt es etwas Besonderes, das ich MyClass tun muss, um es in System.Data.DataRow umwandelbar zu machen? Gibt es eine Schnittstelle, die ich implementieren muss?

Antwort

2

diesen Link finden Sie (die eine Sammlung von DataRows ist, sowie ein Haufen Müll CTDT behandelt den „Junk“ Aspekt.):

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

Eigentlich war es früher Teil von Linq, aber aus irgendeinem Grund wurde es entfernt. Seine Methode funktioniert jedoch gut, also schaut es euch an.

+0

Ich bin mit dieser Antwort gegangen, weil es dem am nächsten kommt, was ich wollte. Ich denke nicht, dass ich diese Lösungen verwenden werde ... aber zumindest beantwortet es meine Frage darüber, warum ich es nicht nutzen konnte, da sie das Feature fallen gelassen haben und der Blogpost von den Betatagen zurück war ... – mezoid

+0

Warum? willst du das nicht benutzen? Wir haben es unserem Framework bei der Arbeit hinzugefügt (zusammen mit dem Null-Fix, den Sie in einem der Kommentare zu diesem Blogpost finden) und es funktioniert wirklich großartig. – BFree

1

Alas, für CopyToDataTable, T muss DataRow sein (oder ein von DataRow abgeleiteter Typ).

(Siehe the MSDN documentation für weitere Informationen.)

+0

* Seufz * Ich hatte gehofft, dass das nicht der Fall war. Ich hatte dieses MSDN-Dokument gelesen, aber nicht ganz verstanden, dass es unbedingt eine DataRow oder etwas sein musste, das von DataRow stammte ... – mezoid

1

Das ist nicht wirklich das, was Sie wollen. CopyToDataTable wird für das Kopieren von Sammlungen speziell von DataRows in eine Datatable gemacht;