2015-10-09 2 views
0

Je suis en train de faire quelque chose comme cela pour créer une copie d'un datarow typé:méthode DataTable.Clear() ont un effet détaché rangée

var desRow = dataTable.NewRow(); 
var sourceRow = dataTable.Rows[rowNum]; 
desRow.ItemArray = sourceRow.ItemArray.Clone() as object[]; 

Mais quand je l'appelle dataTable.Clear() méthode, il efface tous les champs desRow. Comment créer une copie profonde d'un DataRow?

Répondre

1

Dans votre code lorsque vous créez votre nouvelle ligne, vous créez avec cette ligne une référence à dataTable et c'est pourquoi elle efface tous les champs.

Vous pouvez travailler avec un clone de table de données, de cette façon vous aurez une copie en profondeur.

DataTable dt = ... 
DataTable cloneDt = dt.Clone(); 

DataRow row = cloneDt.Rows[number]; 

dt.Rows.Clear(); 
dt.Rows.Add(row); 

De cette façon, vous aurez votre tableau de données d'origine avec seulement la ligne sélectionnée.