2009-02-25 15 views
5

Chciałbym utworzyć tabelę danych z listą za pomocą metody CopyToDataTable dostępnej w DataTableExtensions. I wcześniej zadał pytanie How do I transform a List into a DataSet? i dostał exceptional answer z CMS co było do osiągnięcia tego, co chciałem, tworząc przedłużenie public static DataTable ToDataTable<T>(this IEnumerable<T> collection)Jak korzystać z metody CopyToDataTable System.Data.DataTableExtensions?

Używam co zasugerował ... ale ostatnio nie mam seen in a blog że już istnieje takie rozszerzenie ... CopyToDataTable<T>(this IEnumerable<T> source) : DataTable, które istnieje w System.Data.DataTableExtensions.

W związku z tym uważam, że powinienem przełączyć się na używanie tej wbudowanej metody rozszerzenia zamiast używać tej, którą sam bym sobie musiał utrzymać.

Niestety, mam problem z ustaleniem, jak go użyć.

Mogę wziąć mój IList i powiedzieć myListofMyClass.CopyToDataTable(), ale dostaję błąd kompilacji, który mówi "Typ" MyClass "musi być konwertowalny do" System.Data.DataRow ", aby użyć go jako parametru 'T "w ogólnej metodzie ..."

Czy jest coś specjalnego, co muszę zrobić, aby MyClass można było zamienić na System.Data.DataRow? Czy jest jakiś interfejs, który muszę wdrożyć?

Odpowiedz

2

Zobacz ten link (który jest zbiorem wierszy DataRows plus banda śmieci CTDT obsługuje „śmieci” aspekt.):

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

W zasadzie kiedyś był częścią Linq, ale z jakiegoś powodu został usunięty. Jego metoda działa jednak świetnie, więc sprawdź to.

+0

Poszedłem z tą odpowiedzią, ponieważ jest ona najbliższa temu, co chciałem. Nie sądzę, że będę używał tych rozwiązań ... ale przynajmniej odpowiada na moje pytanie o to, dlaczego nie mogłem go użyć, ponieważ usunęli funkcję, a post na blogu był z powrotem w wersji beta ... – mezoid

+0

Dlaczego nie użyjesz tego? Dodaliśmy go do naszego środowiska pracy (wraz z poprawką null, którą znajdziesz w jednym z komentarzy na tym blogu) i naprawdę działa świetnie. – BFree

1

Niestety, dla CopyToDataTable, T musi być DataRow (lub typ pochodzący od DataRow).

(Patrz the MSDN documentation aby uzyskać więcej informacji.)

+0

* westchnienie * Miałem nadzieję, że tak nie było. Czytałem ten dokument MSDN, ale nie do końca zrozumiałem, że musi to być DataRow lub coś pochodzącego od DataRow ... – mezoid

1

Nie jest to, co chcesz. CopyToDataTable jest dla kopiowania zbiorów konkretnie wierszy DataRows do DataTable;

Powiązane problemy