Insert data from array into datatable

I am connecting datatables to create a new datatable,

Code:

var row = from r0w1 in dt_vi.AsEnumerable()
              join r0w2 in dt_w.AsEnumerable()
              on r0w1.Field<int>("ID") equals r0w2.Field<int>("iD")
              join r0w3 in dt_re.AsEnumerable()
              on r0w1.Field<int?>("ID") equals r0w3.Field<int?>("id")
              join r0w4 in dt_def.AsEnumerable()
              on r0w1.Field<int?>("ID") equals r0w4.Field<int?>("id") into ps
              from r0w4 in ps.DefaultIfEmpty()
              select r0w1.ItemArray.Concat(r0w2.ItemArray.Concat(r0w3.ItemArray.Concat(r0w4 != null ? r0w4.ItemArray : new object[] { }))).ToArray();


foreach (object[] values in row)
    dt.Rows.Add(values);

In the above code

foreach (object[] values in row)
    dt.Rows.Add(values);

slower for hundreds of thousands of lines. I want to put data rowin dtdatatable. I tried

dt=row.CopyToDataTable();

but he gives an error.

How can I use the CopyToDataTable () function here to prevent a loop?

+4
source share
1 answer

Turn off notifications if the attached data is limited to anything .:

dt.BeginLoadData(); //  stops notifications on each addition
foreach (object[] values in row)
    dt.Rows.Add(values);
dt.EndLoadData();

And delete the part .ToArray();to repeat the second loop on each line again.

0
source

Source: https://habr.com/ru/post/1620719/


All Articles