動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About
C#

パターン①: AsEnumerable().Skip(offset).Take(pageSize)

出典: C# DataTable の大量行を Skip&Take でページングする3パターン — 1万行を1000件ずつ処理する設計パターン①: AsEnumerable().Skip(offset).Take(pageSize)

パターン①: AsEnumerable().Skip(offset).Take(pageSize) (csharp)#36a8c2d13d9e
using System;
using System.Data;
using System.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 totalPages = (dt.Rows.Count + pageSize - 1) / pageSize;
Console.WriteLine($"Total rows: {dt.Rows.Count}, pageSize: {pageSize}, totalPages: {totalPages}");
 
for (int page = 0; page < 3; page++) {  // 先頭3ページだけサンプル表示
    var rows = dt.AsEnumerable()
                 .Skip(page * pageSize)
                 .Take(pageSize)
                 .ToList();
    Console.WriteLine($"Page {page}: rows={rows.Count}, first id={rows.First()["id"]}, last id={rows.Last()["id"]}");
}
▸ 実行ボタンで結果を表示
  • id: #36a8c2d13d9e
  • lines: 22
  • extracted: 2026-06-10
  • captured: 2026-06-04

Source収録記事

この snippet は記事の「パターン①: AsEnumerable().Skip(offset).Take(pageSize)」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。

同じ記事から

2
図鑑トップ