C#中通过list的GetRange方法对list进行按执行长度截取并拆分

发布时间 2023-03-23 18:33:34作者: sunny123456

C#中通过list的GetRange方法对list进行按执行长度截取并拆分
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106402471

场景

假如一个list有235万条记录,现在需要每50万条记录生成一个文件,怎样拆分并截取。

注:

博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

首先需要获取总共的需要拆分的文件的个数,通过将list的总长度对指定每个文件的个数进行求余进而决定要拆分的文件的个数。

int excelTotalCount = RecordDataList.Count % eachExcelCount == 0 ? (RecordDataList.Count / eachExcelCount) : (RecordDataList.Count / eachExcelCount + 1);

其中RecordDataList就是所有数据的list,eachExcelCount就是每个文件的数量。

然后声明一个与RecordDataList同类型的list用来对截取的每段进行存取

List<Record> tempRecordList = new List<Record>();

然后就可以通过循环来获取截取的每段的List了

  1. for (int i = 0; i < excelTotalCount; i++)
  2.                 {
  3.  
  4.                     //如果是最后一个csv文件,那么截取到最后
  5.                     if (i == (excelTotalCount - 1))
  6.                     {
  7.                         tempRecordList = RecordDataList.GetRange(eachExcelCount * i, RecordDataList.Count - (eachExcelCount * i));
  8.                     }
  9.                     else
  10.                     {
  11.                         tempRecordList = RecordDataList.GetRange(eachExcelCount * i,eachExcelCount);
  12.                     }
  13.                     //执行其他操作
  14.                     SetRecordSheetWhenBigData(tempRecordList, recordDataItems, fullPathRecord, bgWorker);
  15.                 }

要注意的是list的GetRange方法的第二个参数是要截取的长度