Wednesday, April 13, 2011

DataTable Copying

Hi I have a datatable with 5 columns and I would like to copy only two of those columns to another datatable. What is the best way to do this?

DataTable 1:

col1 col2 col3 col4 col5
1    2    3    4    5
6    7    8    9    10

DataTable 2:

col1 col2
1    2  
6    7

Thanks

From stackoverflow
  • Would something like this be efficent?

            DataTable myTable = new DataTable();
            myTable.Columns.Add("Col1");
            myTable.Columns.Add("Col2");
            myTable.Columns.Add("Col3");
            myTable.Columns.Add("Col4");
            myTable.Columns.Add("Col5");
            myTable.Rows.Add(new object[] { "hey", "hey", "Hey", "hey", "Hey" });
            GridView1.DataSource = myTable;
            GridView1.DataBind();
    
            DataTableReader myReader = myTable.CreateDataReader();
    
            DataTable myTable2 = new DataTable();
            myTable2.Load(myReader);
            myTable2.Columns.Remove("Col3");
            myTable2.Columns.Remove("Col4");
    
            GridView2.DataSource = myTable2;
            GridView2.DataBind();
    
  • or you could clone the datetable and remove the columns you dont want/need

    DataTable dtTest = dtAllData.Clone();
    dtTest.Columns.Remove("col3");
    dtTest.Columns.Remove("col4");
    
    Si : I don't belive Clone copies data, so you would probably still need to iterate through and copy the columns for each row.
    d1k_is : not too sure but it seemed to work when i tried it, tho i cant remember 100%

0 comments:

Post a Comment