DataTable v_templateA = new DataTable(); v_templateA.Columns.AddRange( new DataColumn[]{ _ new DataColumn("date",typeof(DateTime)), _ new DataColumn("product_code", typeof(String)), _ new DataColumn("product_name",typeof(String))} _ ); v_templateA.Columns["product_code"].MaxLength = 15; v_templateA.Columns["product_name"].MaxLength = 50; DataTable v_templateB = v_templateA.Copy(); DataColumn dc1 = new DataColumn("grpcode",typeof(String)); dc1.MaxLength = 15; v_templateB.Columns.Add(dc1); DataColumn dc2 = new DataColumn("grpname", typeof(String)); dc2.MaxLength = 50; v_templateB.Columns.Add(dc2);But this is almost certainly not the approach you would take.....