Ajouter une nouvelle colonne et des données à datatable qui contient déjà data-c#

Comment ajouter un Nouveau DataColumn à un objet DataTable qui contient déjà des données?

Pseudo -

//call SQL helper class to get initial data 
DataTable dt = sql.ExecuteDataTable("sp_MyProc");

dt.Columns.Add("NewColumn", type(System.Int32));

foreach(DataRow row in dr.Rows)
{
    //need to set value to NewColumn column
}
57
demandé sur JohnB 2010-02-22 21:03:02

5 réponses

Continuez avec votre code - vous êtes sur la bonne voie:

//call SQL helper class to get initial data 
DataTable dt = sql.ExecuteDataTable("sp_MyProc");

dt.Columns.Add("NewColumn", typeof(System.Int32));

foreach(DataRow row in dt.Rows)
{
    //need to set value to NewColumn column
    row["NewColumn"] = 0;   // or set it to some other value
}

// possibly save your Dataset here, after setting all the new values
94
répondu marc_s 2016-03-15 14:07:56

Devrait-il pas être foreach au lieu de pour les!?

//call SQL helper class to get initial data  
DataTable dt = sql.ExecuteDataTable("sp_MyProc"); 

dt.Columns.Add("MyRow", **typeof**(System.Int32)); 

foreach(DataRow dr in dt.Rows) 
{ 
    //need to set value to MyRow column 
    dr["MyRow"] = 0;   // or set it to some other value 
} 
11
répondu Imir Hoxha 2016-01-06 11:59:18

Voici une solution alternative pour réduire la boucle For/ForEach, cela réduirait le temps de boucle et les mises à jour rapidement:)

 dt.Columns.Add("MyRow", typeof(System.Int32));
 dt.Columns["MyRow"].Expression = "'0'";
5
répondu Akxaya 2015-03-02 22:16:48

Seulement vous voulez définir le paramètre de valeur par défaut. Cette troisième méthode de surcharge d'appel.

dt.Columns.Add("MyRow", type(System.Int32),0);
2
répondu Nishantha 2015-02-18 10:51:46

Essayez cette

> dt.columns.Add("ColumnName", typeof(Give the type you want));
> dt.Rows[give the row no like  or  or any no]["Column name in which you want to add data"] = Value;
2
répondu Himanshu Shukla 2015-07-14 18:03:15