代码之家  ›  专栏  ›  技术社区  ›  webworm

不使用AsEnumerable()拆分数据表

  •  0
  • webworm  · 技术社区  · 6 年前

    我正在编写一个C脚本,该脚本将在另一个使用C编译器的项目中运行。这台发动机没有 System.Data.DataSetExtensions 也不允许这样做。

    尽管如此,我仍然需要取一个100000行的数据表,并将其分解为最大10000行的较小数据集。 DataExtensions 比如……

    var filteredDataTable = myDataTable.AsEnumerable().Take(10000).CopyToDataTable();
    

    如果不使用 DataSetExtensions ?我应该听天由命地使用 foreach loop 将超过10000行复制到新的 DataTables ?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Vinit    6 年前

    我应该服从使用foreach循环并复制10000多个 行到新的数据表中?

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

    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
    
    推荐文章