動くコード図鑑
$ ls -1 /library | wc -l → 619
触って動く、検証済みの正解集。
公開記事から抽出した全コードブロックを 1 つずつページ化。 ▶ ボタンで 実行ログを再生し、 さも今動いてるかのように出力を流す。

この図鑑の使い方
言語で絞る
C# / SQL / TypeScript / PowerShell / Bash でフィルタ。
▶ で実行
事前収録の出力を 1 行ずつ再生。 ぱっと結果が見える。
記事と接続
各 snippet は出典記事へのリンク付き。 文脈ごと読める。
絞り込み
snippet 一覧
151 件//カテゴリ別の件数と合計金額 var summary = dt.AsEnumerable() .GroupBy(r => r.Field<string>("category")) .Select(g => new {
▶ 実行可
パターン2: GroupBy +集計(Sum / Count / Average)
C# DataTable を LINQ でフィルタ・GroupBy・分割する3パターン#4012f8c5d3ba
var joined = from o in dtOrders.AsEnumerable() join c in dtCustomers.AsEnumerable() on o.Field<int>("customer_id")equals c.Field<int>("id") select new {
▶ 実行可
Q3.複数のDataTableをJOINしたい時は?
C# DataTable を LINQ でフィルタ・GroupBy・分割する3パターン#bbcfef773b6a
using System; using System.Data; using System.Linq; var dt = new DataTable();
▶ 実行可
パターン①: AsEnumerable().Skip(offset).Take(pageSize)
C# DataTable の大量行を Skip&Take でページングする3パターン — 1万行を1000件ずつ処理する設計#36a8c2d13d9e
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}");
▶ 実行可
パターン②: forループ+ Rows[i] (LINQ不使用・メモリ効率)
C# DataTable の大量行を Skip&Take でページングする3パターン — 1万行を1000件ずつ処理する設計#d083059d494f
using System; using System.Data; using System.Linq; var dt = new DataTable();
▶ 実行可
パターン③: GroupBy((row, i)=> i / pageSize)で全ページ一括分割
C# DataTable の大量行を Skip&Take でページングする3パターン — 1万行を1000件ずつ処理する設計#76f08f93fa36
// ✅定石1: DateTime.Kindの3パターン var local = DateTime.Now; // Kind=Local var utc = DateTime.UtcNow; // Kind=Utc var unsp = new DateTime(2026, 5, 8, 14, 30, 0); // Kind=Unspecified
▶ 実行可
定石1: DateTime.Kindの3つの罠(Local / Utc / Unspecified)
C# DateTime と DateTimeOffset の違い・タイムゾーン処理の正解(業務SE本番事故編)#05c39f91324d
// ✅定石3: DateTimeOffsetでタイムゾーン情報を持ち回る DateTimeOffset jstNow = DateTimeOffset.Now; // JST環境なら+09:00 DateTimeOffset utcNow = DateTimeOffset.UtcNow; // +00:00 Console.WriteLine($"JST: {jstNow:yyyy-MM-dd HH:mm:ss zzz}"); // 2026-05-08 14:30:00 +09:00
▶ 実行可
定石3: DateTimeOffsetを使うべき場面
C# DateTime と DateTimeOffset の違い・タイムゾーン処理の正解(業務SE本番事故編)#ec04c241b5a6
// ✅定石4: TimeZoneInfoで明示的タイムゾーン変換 var utcNow = DateTime.UtcNow; // JSTに変換(.NET Framework / Windows: "Tokyo Standard Time") TimeZoneInfo jstZone = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
▶ 実行可
定石4: TimeZoneInfo.ConvertTimeで明示的タイムゾーン変換
C# DateTime と DateTimeOffset の違い・タイムゾーン処理の正解(業務SE本番事故編)#0a3109479ee8
-- ✅定石5-a: datetimeとdatetime2の精度差 DECLARE @dt1 datetime = '2026-05-08 14:30:00.123'; DECLARE @dt2 datetime2 = '2026-05-08 14:30:00.123'; SELECT @dt1 AS dt_value, @dt2 AS dt2_value;
▶ 実行可
定石5: SQL Server datetime vs datetime2 —業務系JOIN事故の温床
C# DateTime と DateTimeOffset の違い・タイムゾーン処理の正解(業務SE本番事故編)#b343acd30a08
// ✅定石5-b: SQL Serverから読み出したDateTimeのKindはUnspecified using (var conn = new SqlConnection(connStr)) using (var cmd = new SqlCommand("SELECT created_at FROM order_log WHERE id = @id", conn)) { conn.Open();
▶ 実行可
定石5: SQL Server datetime vs datetime2 —業務系JOIN事故の温床
C# DateTime と DateTimeOffset の違い・タイムゾーン処理の正解(業務SE本番事故編)#b11995d138a9
// => 1 Console.WriteLine(((decimal)1.1111).ToInt()); // => 1 Console.WriteLine(((decimal)1.9999).ToInt());
▶ 実行可
問題点は小数点以下の丸め方法
【C#】Decimalからintに変換する拡張メソッドを作ってみた#8fc8bb304e09
// => 2 Console.WriteLine(((decimal)1.5).ToInt(ParseType.切り上げ)); // => 1 Console.WriteLine(((decimal)1.5).ToInt(ParseType.切り捨て));
▶ 実行可
Decimalの小数点以下の丸め方法をフレキシブルにできるようにした
【C#】Decimalからintに変換する拡張メソッドを作ってみた#e4a00beac695
// 設定キーをアルファベット順で反復したい場面 SortedDictionary<string, string> config = new SortedDictionary<string, string>(); config.Add("zebra", "ZZ"); config.Add("apple", "AA"); config.Add("mango", "MM");
▶ 実行可
SortedDictionary を選ぶ場面 (キー順序が必要な時)
C# Dictionary と HashTable の使い分け — 業務SEが型安全に書く3つの判断軸#60f75f238d6e
//商品ステータスのEnum public enum ProductStatus { Active = 1, //販売中 Suspended = 2, //一時停止
▶ 実行可
パターン1:基本宣言と数値変換
C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン#4c6d50a09fcd
using System; using System.ComponentModel; using System.Reflection; public enum ProductStatus
▶ 実行可
パターン2: Description属性で画面表示
C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン#b083bdc7c698
using System; [Flags] public enum Permission {
▶ 実行可
パターン3: [Flags]属性でビット組合せ
C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン#55cfcc401bc8
using System; public enum ProductStatus { Active = 1,
▶ 実行可
パターン5: Parse / TryParse + IsDefinedでDB値検証
C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン#89bad7c4a5ae
// ✅定石1-a: try-catch —例外を捕まえて処理を続ける try { var dt = LoadFromDb(orderId); Render(dt);
▶ 実行可
定石1: try-catch / try-finally / usingの関係(usingは構文糖衣)
C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け#c0aab089a37f
// ✅定石3-a: Exceptionフィルタ(when句)でデッドロックだけリトライ try { ExecuteSql(); }
▶ 実行可
定石3: Exceptionフィルタ(when句)でcatch内if分岐を排除
C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け#2abecfea594d
// ❌ NG: throw ex;はスタックトレースが「rethrowした行」でリセットされる public void OuterMethod() { try {
▶ 実行可
定石4: throw vs throw exのスタックトレース挙動
C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け#08d0e82d4c16
// ✅定石4:性能比較(10万行×約100MBのログを想定) const string path = @"C:\logs\big-app.log"; // ReadAllLines版(メモリに全部ロード) GC.Collect(); GC.WaitForPendingFinalizers();
▶ 実行可
定石4:性能比較— Stopwatch + GC.GetTotalMemory
C# ファイルIO の正解 — StreamReader / File.ReadAllLines / File.ReadLines / using の使い分け#976121387821
class Program { static void Main(string[] args) { int num = 2;
▶ 実行可
そもそも拡張メソッドとは?
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#2eff0113ecce
string str = "Hello World"; Console.WriteLine(str.Decoration()); Console.ReadLine();
▶ 実行可
そもそも拡張メソッドとは?
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#75178f10b7fa
public static class AnimalExtenssionMethod { public static void Roar(this IAnimal animal) { Console.WriteLine(animal.RoarSound);
▶ 実行可
Interfaceに拡張メソッドを入れるとデフォルト実装できる
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#c0e9f3bf46f1
var dog = new Dog(); dog.Roar(); Console.ReadLine();
▶ 実行可
Interfaceに拡張メソッドを入れるとデフォルト実装できる
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#7a4021c0d58e
var dog = new Dog(); var cat = new Cat(); dog.Roar(); cat.Roar(); Console.ReadLine();
▶ 実行可
Interfaceに拡張メソッドを入れるとデフォルト実装できる
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#f566dee7ce20
// ✅パターン1: is +パターンマッチ(C# 7以降の本命) public void Process(object data) { if (data is IDataLoader loader) {
▶ 実行可
パターン1: is +パターンマッチング(C# 7以降の本命)
C# Interface の継承判定と暗黙キャストの定石(is / as / 暗黙キャスト 3パターン)#159cd4da0496
using System;namespace InterfaceExample { public class CSharpHello : ISayHello { public void Say()
▶ 実行可
Interfaceを継承したクラスを定義
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#9b430c6ee487
using System;namespace InterfaceExample { public class VBnetHello : ISayHello { public void Say()
▶ 実行可
Interfaceを継承したクラスを定義
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#950dfa8ee749
class Program { static void Main(string[] args) { var helloList = new ISayHello[]
▶ 実行可
配列をぶん回して実行
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#e9039e6a9d95