将一系列数据行复制到另一个数据表 - C#

Posted

技术标签:

【中文标题】将一系列数据行复制到另一个数据表 - C#【英文标题】:Copy a range of data rows to another datatable - C# 【发布时间】:2018-07-11 16:03:13 【问题描述】:

我有一个包含 100 行的数据表,我想将一系列行(第 31 行到第 50 行)复制到另一个数据表。

我遵循以下逻辑。

DataTable dtNew = table.Clone();
for(int k=30; k < 50 && k < table.Rows.Count; k++)

     dtNew.ImportRow(table.Rows[k]);

有没有更好的方法来做到这一点?

【问题讨论】:

table是什么类型的? @GiladReich DataTable 我认为 【参考方案1】:

使用LINQ,您可以执行以下操作:

DataTable dtNew = table.Select().Skip(31).Take(20).CopyToDataTable();

在性能方面,使用 LINQ 不会做得更好,但是它使它更具可读性。

编辑:添加处理检查

int numOFEndrow = 20;
int numOfStartRow = 31;
if (table.Rows.Count > numOFEndrow +numOfStartRow)

    DataTable dtNew = table.Select().Skip(numOfStartRow).Take(numOFEndrow).CopyToDataTable();

【讨论】:

如果在任何情况下表数 @RamaKrishna,你会得到一个异常,所以你必须处理它【参考方案2】:

如果是关于可读性,那么将其放入扩展方法是一个好主意。 不改变你的逻辑:

public static class Utils

    public static void CopyRows(this DataTable from, DataTable to, int min, int max)
    
        for (int i = min; i < max && i < from.Rows.Count; i++)
            to.ImportRow(from.Rows[i]);
    

然后,您可以随时重复使用它,而无需使用所有花哨的语法,并且知道如果存在性能问题,它完全可以满足您的需求:

        DataTable dt1 = new DataTable();
        DataTable dt2 = new DataTable();
        dt1.CopyRows(dt2, 30, 50);

【讨论】:

以上是关于将一系列数据行复制到另一个数据表 - C#的主要内容,如果未能解决你的问题,请参考以下文章

如何使用复制命令在 postgres 中将数据从一个表复制到另一个表

C#中Listview的数据复制到另外一个Listview的问题

DB2 将一列值复制到另一列

SQL - 将一列复制到另一列

oracle 将一张表的数据插入到另一张表

将一台电脑上的虚拟机上的系统复制到另一台电脑的虚拟机上!!!and想询问大神们问题的解决办法??