【发布时间】:2016-03-25 00:22:30
【问题描述】:
我正在加入数据表以创建一个新的数据表,
代码:
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 数据表中。我试过了
dt=row.CopyToDataTable();
但它给出了错误。
如何在这里使用 CopyToDataTable() 函数来防止循环?
【问题讨论】:
-
msdn.microsoft.com/en-us/library/bb386921(v=vs.110).aspx 顺便说一句,这不会有帮助。 DataTable 是一个内存表,显然不建议在其中存储如此庞大的数据。
-
CopyToDataTable也使用循环 -
@TimSchmelter,有没有我可以使用的最佳方法,因为我使用的上述方法效率不高!或者有没有可能我可以使用 CopyToDataTable ?
-
Copy to Datatable的可能重复
-
您是否考虑过使用 SqlBulkCopy 将行添加到数据库表中?