Chcę przekonwertować DataRow
tablicę na DataTable
... Jaki jest najprostszy sposób, aby to zrobić?
98
Dlaczego nie powtórzyć swojej tablicy DataRow i dodać (używając DataRow.ImportRow, jeśli to konieczne, aby uzyskać kopię DataRow), coś takiego:
foreach (DataRow row in rowArray) {
dataTable.ImportRow(row);
}
Upewnij się, że dataTable ma ten sam schemat co DataRows w tablicy DataRow.
DataTable dataTable = new DataTable(); dataTable.ImportRow(dataRow); MyControl.DataSource = dataTable;
rowArray.CopyToDataTable();
dlatego, że zachowuje schemat tabeli i nie zastępuje go nowym obiektem tabeli!Dla .Net Framework 3.5+
Ale jeśli w tablicy nie ma żadnych wierszy, może to spowodować błędy, takie jak źródło nie zawiera DataRows . Dlatego, jeśli zdecydujesz się użyć tej metody
CopyToDataTable()
, powinieneś sprawdzić tablicę, aby wiedzieć, że zawiera datarows, czy nie.Odniesienie dostępne w MSDN: DataTableExtensions.CopyToDataTable Method (IEnumerable)
źródło
copyToDataTable()
? Nie znalazłem tego w .net 2.0copyToDataTable()
metoda tworzy idealną kopię kolumn wybranych wierszy, podczas gdydatatable.ImportRow(row)
metoda nieźródło
Input array is longer than the number of columns in this table.
”. Błąd wersji z klonem: „Unable to cast object of type 'System.Data.DataRow' to type 'System.IConvertible'.Couldn't store <System.Data.DataRow> in StoreOrder Column. Expected type is Int64.
” Uwaga:StoreOrder
jest to pierwsza kolumna w schemacie tabeli. Wygląda na to, że próbuje wcisnąć cały datarow do tej pierwszej kolumnyInnym sposobem jest użycie DataView
źródło
Prosty sposób to:
źródło
źródło
źródło
źródło
.Net 3.5+ dodał DataTableExtensions, użyj metody DataTableExtensions.CopyToDataTable
Dla tablicy datarow po prostu użyj .CopyToDataTable (), a zwróci ona datatable.
Do użytku pojedynczego
źródło
Oto rozwiązanie. Powinno działać dobrze.
źródło
Jeśli ktoś tego potrzebuje w VB.NET:
źródło
Możesz użyć System.Linq w ten sposób:
źródło
Najpierw musisz sklonować strukturę tabeli danych, a następnie zaimportować wiersze za pomocą pętli for
źródło
źródło