Here you are an example how to do it.
using System.Collections.Generic;
using System.Data;
namespace DataTableTest
{
class Program
{
static void Main(string[] args)
{
var dt = new DataTable();
var dataColumns = new List<DataColumn>
{
new DataColumn("A"),
new DataColumn("B"),
new DataColumn("C"),
new DataColumn("D"),
new DataColumn("E")
}.ToArray();
dt.Columns.AddRange(dataColumns);
dt.Rows.Add(1, 2, 3, 4, 5);
var newDataColumns = new List<DataColumn>
{
new DataColumn("F"),
new DataColumn("G"),
new DataColumn("H"),
new DataColumn("I"),
new DataColumn("J")
}.ToArray();
dt.Columns.Clear();
dt.Columns.AddRange(newDataColumns);
}
}
}
You cannot replace DataColumns directly.
You must first remove the old DataColumns by using the Clear method.
dt.Columns.Clear();
Then you can add a new DataColumn array.
dt.Columns.AddRange(newDataColumns);
A good idea might be to use a debugger to see what is happening after each line of code.
Moreover it is recommended to read this article:
A Practical Guide to .NET DataTables, DataSets and DataGrids - Part 1[
^]