将一系列数据行复制到另一个数据表 - 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 中将数据从一个表复制到另一个表