Removing multiple columns from a C # data table

I need to remove multiple columns from a datatable and snap to the grid view. So I tried under the code:

        obj_dt = obj_backup.sale_where_date();

        grd_excel.DataSource = obj_dt;

        obj_dt_pdf = obj_dt;

        // to remove few columns in data table 

        obj_dt_pdf.Columns.Remove("Location");
        obj_dt_pdf.Columns.Remove("No Opn Stack");
        obj_dt_pdf.Columns.Remove("Expiry Date");
        obj_dt_pdf.Columns.Remove("Discount %");
        obj_dt_pdf.Columns.Remove("Discount Amt");
        obj_dt_pdf.Columns.Remove("TAX");
        obj_dt_pdf.Columns.Remove("VAT");
        obj_dt_pdf.Columns.Remove("Entry Date");

        dataGridView_wd_pdf.DataSource = obj_dt_pdf;

The problem is that after deleting columns in obj_dt_pdf, it is also removed from obj_dt. I need to delete only in obj_dt_pdf.
where did i make a mistake?

+4
source share
4 answers

When you assign obj_dt- obj_dt_pdfyou do not copy DataTable- you simply make a copy of the link to the instance DataTable. Thus, both variables point to the same instance DataTable:

obj_dt_pdf = obj_dt;

DataTable ( DataTable.Copy() , ):

obj_dt_pdf = obj_dt.Copy();

obj_dt_pdf DataTable, DataTable.

0

. Clone, DataTable ( ) Copy, :

obj_dt = obj_backup.sale_where_date();
var copy = obj_dt.Copy();
copy.Columns.Remove("Location");
copy.Columns.Remove("No Opn Stack");
// ...
dataGridView_wd_pdf.DataSource = copy;
+1

DataTable - , - " ", , , , .

"" , , , DataTable Copy(), :

obj_dt_pdf = obj_dt.Copy();

Clone(), ,

0
source

You need to use Copysomething like this:

obj_dt_pdf = obj_dt.Copy();

instead of this:

obj_dt_pdf = obj_dt;

The method Copywill copy the structure data and .

0
source

All Articles