将DataRows复制到另一个DataTable的更有效方法

时间:2015-11-05 07:15:51

标签: c# .net datatable

这个问题是为一个简单的问题找到一种更有效的方法。我有两个具有相同结构的 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行一次。是否有一个函数指定要复制的行集。

3 个答案:

答案 0 :(得分:1)

您的简单方法存在一些问题,因为它不会处理主键违规。尝试BeginLoadData,LoadDataRow和EndLoadData。这应该更有效率。 BeginLoadData和EndLoadData只调用一次。

答案 1 :(得分:1)

据我所知,除了遍历所有行之外,没有其他方法可以将多行从一个Datatable复制到另一个。事实上,在MSDN上有一篇文章告诉你如何在Datatables之间复制行并使用迭代循环。

https://support.microsoft.com/en-gb/kb/305346

答案 2 :(得分:0)

如果您只需要一个新的独立DataTable实例,并且不需要将行附加到现有的DataTable,那么DataView.ToTable()方法非常方便。

https://msdn.microsoft.com/en-us/library/a8ycds2f(v=vs.110).aspx

它创建一个具有相同架构和内容的单独副本。

DataTable objTableB = objTableA.DefaultView.ToTable();