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

パターン③: GroupBy((row, i)=> i / pageSize)で全ページ一括分割

出典: C# DataTable の大量行を Skip&Take でページングする3パターン — 1万行を1000件ずつ処理する設計パターン③: GroupBy((row, i)=> i / pageSize)で全ページ一括分割

パターン③: GroupBy((row, i)=> i / pageSize)で全ページ一括分割 (csharp)#76f08f93fa36
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;
var pages = dt.AsEnumerable()
              .Select((row, i) => new { row, i })
              .GroupBy(x => x.i / pageSize)
              .ToList();
 
Console.WriteLine($"Total pages: {pages.Count}");
foreach (var page in pages.Take(3)) {
    var rows = page.Select(x => x.row).ToList();
    Console.WriteLine($"Page {page.Key}: rows={rows.Count}, first id={rows.First()["id"]}, last id={rows.Last()["id"]}");
}
▸ 実行ボタンで結果を表示
  • id: #76f08f93fa36
  • lines: 22
  • extracted: 2026-06-10
  • captured: 2026-06-04

Source収録記事

この snippet は記事の「パターン③: GroupBy((row, i)=> i / pageSize)で全ページ一括分割」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。

同じ記事から

2
図鑑トップ