这个问题是为一个简单的问题找到一种更有效的方法。我有两个具有相同结构的 DataTables (即列具有相同的名称和相同的标准)。让他们调用 DataTable A 和 DataTable B 。假设两者都有100行。现在,我想将 DataTable B 的所有行复制到 DataTable A ,而不从 DataTable A 中删除行。所以最后 DataTable A 有200行。我这样做了,如下所示。
for (int i = 0; i < B.Rows.Count - 1;i++ )
{
DataRow dr = B.Rows[i];
A.Rows.Add(dr);
}
问题是我不想循环。有没有直接的方法来复制它,没有循环。整个100行一次。是否有一个函数指定要复制的行集。
答案 0 :(得分:1)
您的简单方法存在一些问题,因为它不会处理主键违规。尝试BeginLoadData,LoadDataRow和EndLoadData。这应该更有效率。 BeginLoadData和EndLoadData只调用一次。
答案 1 :(得分:1)
据我所知,除了遍历所有行之外,没有其他方法可以将多行从一个Datatable复制到另一个。事实上,在MSDN上有一篇文章告诉你如何在Datatables之间复制行并使用迭代循环。
答案 2 :(得分:0)
如果您只需要一个新的独立DataTable实例,并且不需要将行附加到现有的DataTable,那么DataView.ToTable()方法非常方便。
https://msdn.microsoft.com/en-us/library/a8ycds2f(v=vs.110).aspx
它创建一个具有相同架构和内容的单独副本。
DataTable objTableB = objTableA.DefaultView.ToTable();