我有一个填充了 360,000 行 SQL 数据的 DataTable(这是有意的)。但是,这会遇到 OOM 问题。
这就是我所拥有的,但是,我不确定在最后一个 1000 间隔之后如何处理任何事情。或者也许有更好的方法
int catchInt = 0;
string combineWhereClause = string.Empty;
for (int i = 0; i < ThousandLoopTable.Rows.Count; i++)
{
catchInt++;
combineWhereClause = combineWhereClause +
"','" +
ThousandLoopTable.Rows[i].ItemArray[0].ToString();
if (catchInt >= 1000)
{
catchInt = 0;
combineWhereClause = combineWhereClause.TrimStart('\'');
combineWhereClause = combineWhereClause.TrimStart(',');
Directory.CreateDirectory(ExportDirectory);
SQLProcessing.SQLProcessor.MasterSqlConnection =
SQLProcessing.SQLProcessor.OpenMasterSqlConnection(SQLServer);
DataTable dtTable =
SQLProcessing.SQLProcessor.QueryDataTable(sql_selectionquery);
for (int m = 0; m < dtTable.Rows.Count; m++)
{
string FileName = dtTable.Rows[m].ItemArray[0].ToString() + ".txt";
string OCR = dtTable.Rows[m].ItemArray[1].ToString();
File.AppendAllText(ExportDirectory + "\\" + FileName, OCR);
}
combineWhereClause = string.Empty;
}
}
因此,例如,如果有 3120 行,这将执行 3000,但不会执行最后 120 行。但是,我不确定如何处理最后 120 行,因为我真的不想在 for 循环中这样做我?