C#
パターン②: forループ+ Rows[i] (LINQ不使用・メモリ効率)
出典: C# DataTable の大量行を Skip&Take でページングする3パターン — 1万行を1000件ずつ処理する設計 — パターン②: forループ+ Rows[i] (LINQ不使用・メモリ効率)
var dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
for (int i = 1; i <= 10000; i++) {
dt.Rows.Add(i, $"item-{i}");
}
int pageSize = 1000;
int totalRows = dt.Rows.Count;
int totalPages = (totalRows + pageSize - 1) / pageSize;
for (int page = 0; page < totalPages; page++) {
int start = page * pageSize;
int end = Math.Min(start + pageSize, totalRows); // 境界処理
for (int i = start; i < end; i++) {
DataRow row = dt.Rows[i];
// ここでバッチ処理 (DB INSERT / API POST など)
}
Console.WriteLine($"Page {page} processed: {end - start} rows");
}
▸ 実行ボタンで結果を表示
Source収録記事
この snippet は記事の「パターン②: forループ+ Rows[i] (LINQ不使用・メモリ効率)」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
