Je souhaite convertir un DataRow
tableau en DataTable
... Quelle est la manière la plus simple de procéder?
99
Pourquoi ne pas parcourir votre tableau DataRow et ajouter (en utilisant DataRow.ImportRow, si nécessaire, pour obtenir une copie de DataRow), quelque chose comme:
foreach (DataRow row in rowArray) {
dataTable.ImportRow(row);
}
Assurez-vous que votre dataTable a le même schéma que les DataRows de votre tableau DataRow.
DataTable dataTable = new DataTable(); dataTable.ImportRow(dataRow); MyControl.DataSource = dataTable;
rowArray.CopyToDataTable();
parce que cela conserve le schéma de la table et ne le remplace pas par un nouvel objet de table!Pour .Net Framework 3.5+
Mais s'il n'y a pas de lignes dans le tableau, cela peut provoquer des erreurs telles que La source ne contient pas de DataRows . Par conséquent, si vous décidez d'utiliser cette méthode
CopyToDataTable()
, vous devez vérifier le tableau pour savoir qu'il a des lignes de données ou non.Référence disponible sur MSDN: DataTableExtensions.CopyToDataTable, méthode (IEnumerable)
la source
copyToDataTable()
? Je ne l'ai pas trouvé dans .net 2.0copyToDataTable()
méthode crée une copie parfaite des colonnes des lignes sélectionnées, tandis que ladatatable.ImportRow(row)
méthode ne le fait pasla source
Input array is longer than the number of columns in this table.
". Erreur de version With-Clone: "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.
" Remarque:StoreOrder
est la première colonne du schéma de table. Il semble qu'il essaie de brouiller tout le flux de données dans cette première colonneUne autre façon consiste à utiliser un DataView
la source
Un moyen simple est:
la source
la source
la source
la source
.Net 3.5+ a ajouté DataTableExtensions, utilisez la méthode DataTableExtensions.CopyToDataTable
Pour le tableau datarow, utilisez simplement .CopyToDataTable () et il retournera datable.
Pour une utilisation unique de flux de données
la source
Voici la solution. Cela devrait fonctionner correctement.
la source
Incase quiconque en a besoin dans VB.NET:
la source
Vous pouvez utiliser System.Linq comme ceci:
la source
Vous devez d'abord cloner la structure de la table de données, puis importer des lignes à l'aide de la boucle for
la source
la source