Datentyp einer DataTable-Spalte ändern

Der Datentyp einer Spalte im DataTable lässt sich durch die DataType-Eigenschaft ermitteln oder festlegen.


DataTable t = new DataTable();
t.Columns.Add("Col1", typeof(string));
t.Columns["Col1"].DataType = typeof (Int32);

Allerdings ist das Setzen des Typs nur möglich, wenn das DataTable keine Daten enthält. Für ein gefülltes DataTable kann dies über ein zweites DataTable-Objekt, das per Clone() erstellt und mittels ImportRow() gefüllt wird, erreicht werden.


DataTable t = new DataTable();
t.Columns.Add("Col1", typeof (string));
for (int iCounter = 1; iCounter < 25; iCounter++)
{
  DataRow dRow = t.NewRow(); 
  dRow["Col1"] = iCounter.ToString();
  t.Rows.Add(dRow);
}
DataTable t2 = t.Clone();
t2.Columns["Col1"].DataType = typeof (Int32);
foreach (DataRow row in t.Rows)
{
  t2.ImportRow(row);
}