复制到Datatable

时间:2015-12-10 09:45:27

标签: c# datatable

我正在加入数据表来创建一个新数据表,

代码:

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);

在上面的代码中,

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

对于数十万行来说很慢。我想将row的数据放入dt

我想知道是否存在任何方式,我不必使用循环来创建新的数据表?

1 个答案:

答案 0 :(得分:1)

正如@Thanos Markow所提到的,你需要使用dataTable.Merge(the second data table)

重要提示:合并操作仅考虑原始表和要合并的表。子表不受影响或包含在内。如果一个表有一个或多个子表(定义为关系的一部分),则每个子表必须单独合并。