Ich möchte ein DataRow
Array in DataTable
... konvertieren. Was ist der einfachste Weg, dies zu tun?
97
Warum nicht Ihr DataRow-Array durchlaufen und hinzufügen (ggf. mit DataRow.ImportRow, um eine Kopie der DataRow zu erhalten), etwa:
foreach (DataRow row in rowArray) {
dataTable.ImportRow(row);
}
Stellen Sie sicher, dass Ihre dataTable dasselbe Schema wie die DataRows in Ihrem DataRow-Array hat.
DataTable dataTable = new DataTable(); dataTable.ImportRow(dataRow); MyControl.DataSource = dataTable;
rowArray.CopyToDataTable();
das Tabellenschema beizubehalten und es nicht durch ein neues Tabellenobjekt zu ersetzen!Für .Net Framework 3.5+
Wenn das Array jedoch keine Zeilen enthält , kann dies zu Fehlern führen, z. B. Die Quelle enthält keine DataRows . Wenn Sie sich für diese Methode entscheiden
CopyToDataTable()
, sollten Sie daher das Array überprüfen, um festzustellen , ob es Datenzeilen enthält oder nicht.Referenz verfügbar bei MSDN: DataTableExtensions.CopyToDataTable-Methode (IEnumerable)
quelle
copyToDataTable()
? Ich habe es nicht in .net 2.0 gefundencopyToDataTable()
Methode eine perfekte Kopie der Spalten der ausgewählten Zeilen erstellt, während diedatatable.ImportRow(row)
Methode dies nicht tutquelle
Input array is longer than the number of columns in this table.
". With-Clone-Versionsfehler: "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.
" Hinweis:StoreOrder
ist die erste Spalte im Tabellenschema. Es scheint, als würde versucht, das gesamte Datenfenster in diese erste Spalte zu steckenEine andere Möglichkeit ist die Verwendung einer DataView
quelle
Einfacher Weg ist:
quelle
quelle
quelle
quelle
.Net 3.5+ DataTableExtensions hinzugefügt, verwenden Sie die DataTableExtensions.CopyToDataTable-Methode
Verwenden Sie für ein Datenarray-Array einfach .CopyToDataTable () und es wird datatable zurückgegeben.
Für einzelne Daten verwenden
quelle
Hier ist die Lösung. Es sollte gut funktionieren.
quelle
Falls jemand es in VB.NET braucht:
quelle
Sie könnten System.Linq folgendermaßen verwenden:
quelle
Sie müssen zuerst die Struktur der Datentabelle klonen und dann Zeilen mit der for-Schleife importieren
quelle
quelle