場景
假如一個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了
for (int i = 0; i < excelTotalCount; i++) { //如果是最后一個csv文件,那么截取到最后 if (i == (excelTotalCount - 1)) { tempRecordList = RecordDataList.GetRange(eachExcelCount * i, RecordDataList.Count - (eachExcelCount * i)); } else { tempRecordList = RecordDataList.GetRange(eachExcelCount * i,eachExcelCount); } //執行其他操作 SetRecordSheetWhenBigData(tempRecordList, recordDataItems, fullPathRecord, bgWorker); }
要注意的是list的GetRange方法的第二個參數是要截取的長度


