为了账号安全,请及时绑定邮箱和手机立即绑定

不使用 AsEnumerable() 拆分数据表

不使用 AsEnumerable() 拆分数据表

C#
largeQ 2021-10-24 16:37:35
我正在编写一个 C# 脚本,该脚本将在另一个使用 C# 编译器的项目中运行。这个引擎没有被System.Data.DataSetExtensions引用,也不会被允许这样做。话虽如此,我仍然需要采用 100,000 行的 DataTable 并将其分解为最多 10,000 行的较小数据集。通常我会使用DataExtensions类似 ..var filteredDataTable = myDataTable.AsEnumerable().Take(10000).CopyToDataTable();在不使用的情况下,有什么有效的方法可以解决这个问题DataSetExtensions?我应该放弃使用 aforeach loop并将超过 10,000 行复制到 new 中DataTables吗?
查看完整描述

1 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

我应该放弃使用 foreach 循环并将超过 10,000 行复制到新的 DataTables 中吗?


是的,您也可以考虑编写自己的扩展方法来切片表并在需要时重用它。像下面这样的 -


public DataTable  SliceTable(this DataTable dt, int rowsCount, int skipRows=0)

{

     DataTable dtResult = dt.Clone();

     for (int i = skipRows; i < dt.Rows.Count && rowsCount > 0; i++)

     {

         dtResult.ImportRow(dt.Rows[i]);

         rowsCount --;

     }


     return dtResult;

}

用途-


DataTable myData; -- Original table

var slice1 = myData.SliceTable(1000); // get slice of first 1000 rows

var slice2 = myData.SliceTable(1000,1000); // get rows from 1001 to 2000

var slice3 = myData.SliceTable(1000,2000); // get rows from 2001 to 3000


查看完整回答
反对 回复 2021-10-24
  • 1 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信