Добавить новый столбец и данные в Dataatable, который уже содержит данные - c # - PullRequest
62 голосов
/ 22 февраля 2010

Как добавить новый DataColumn к DataTable объекту, который уже содержит данные?

псевдокод

//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
}

Ответы [ 5 ]

100 голосов
/ 22 февраля 2010

Просто продолжайте свой код - вы на правильном пути:

//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
11 голосов
/ 07 января 2012

Разве это не должно быть foreach, а не для!?

//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 
} 
5 голосов
/ 03 марта 2015

Вот альтернативное решение для сокращения циклов For / ForEach, это уменьшило бы время цикла и быстрые обновления :)

 dt.Columns.Add("MyRow", typeof(System.Int32));
 dt.Columns["MyRow"].Expression = "'0'";
3 голосов
/ 18 февраля 2015

Только вы хотите установить значение параметра по умолчанию. Это вызов третьего метода перегрузки.

dt.Columns.Add("MyRow", type(System.Int32),0);
2 голосов
/ 14 июля 2015

Попробуйте это

> 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;
...