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は実行しません。ただし、forループで実行したくないので、最後の120を処理する方法がわかりません。私?