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

この図鑑の使い方
言語で絞る
C# / SQL / TypeScript / PowerShell / Bash でフィルタ。
▶ で実行
事前収録の出力を 1 行ずつ再生。 ぱっと結果が見える。
記事と接続
各 snippet は出典記事へのリンク付き。 文脈ごと読める。
絞り込み
snippet 一覧
473 件var names = products .Where(p => p.Price >= 1000) .Select(p => p.Name) .ToList();
俺が TypeScript に出会った朝 — LINQ が見当たらない焦り
C# LINQ → TypeScript Array methods 翻訳早見表 — Where/Select/GroupBy が filter/map/reduce にどう写るか未収録#d65472f31257
// C# bool hasExpensive = products.Any(p => p.Price >= 10000); bool allInStock = products.All(p => p.Stock > 0);
対応 7: Any / All ↔ some / every
C# LINQ → TypeScript Array methods 翻訳早見表 — Where/Select/GroupBy が filter/map/reduce にどう写るか未収録#b3a1ea8fb054
// C# 側 (3 行で済む) var counts = products .Where(p => p.Price >= 1000) .GroupBy(p => p.Category) .ToDictionary(g => g.Key, g => g.Count());
ミニマム検証のハンズオン
C# LINQ → TypeScript Array methods 翻訳早見表 — Where/Select/GroupBy が filter/map/reduce にどう写るか未収録#279dc945d7aa
// NGパターン:直訳 string r = s.Substring(s.Length - 3); // "cde" だが s が短いと例外 string r2 = "ab".Substring("ab".Length - 5); // ArgumentOutOfRangeException string r3 = ((string)null).Substring(((string)null).Length - 3); // NRE
Rightの仕様差
VB.net の Right / Mid / Left を C# に翻訳する完全早見表未収録#3b80a0da3253
public static class StringCompat { /// <summary>VB.net の Right 相当。null・長さオーバーフロー・負値を吸収。</summary> public static string Right(string s, int length) {
ヘルパ1: RightのC#実装
VB.net の Right / Mid / Left を C# に翻訳する完全早見表未収録#d3eb9db0ae6a
string r1 = StringCompat.Right("abcde", 3); // "cde" string r2 = StringCompat.Right("ab", 5); // "ab" string r3 = StringCompat.Right(null, 3); // ""
ヘルパ1: RightのC#実装
VB.net の Right / Mid / Left を C# に翻訳する完全早見表未収録#45fda6516d55
public static class StringCompat { /// <summary>VB.net の Mid 相当。1ベース起点、範囲外は空文字。</summary> public static string Mid(string s, int start, int length) {
ヘルパ2: MidのC#実装
VB.net の Right / Mid / Left を C# に翻訳する完全早見表未収録#af9a11fd98ca
public static class StringCompat { /// <summary>VB.net の Left 相当。null・長さオーバーフロー・負値を吸収。</summary> public static string Left(string s, int length) {
ヘルパ3: LeftのC#実装
VB.net の Right / Mid / Left を C# に翻訳する完全早見表未収録#33c0d3d82b20
public static string RightByGrapheme(string s, int length) { if (string.IsNullOrEmpty(s) || length <= 0) return string.Empty; var si = new System.Globalization.StringInfo(s); if (length >= si.LengthInTextElements) return s;
全角文字・Surrogate Pairで末尾が壊れる
VB.net の Right / Mid / Left を C# に翻訳する完全早見表未収録#f3681c003f30
// バイト単位で取りたい場合(SJIS で固定長レコードを切る等) byte[] bytes = System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes(s); byte[] slice = new byte[len]; Array.Copy(bytes, start, slice, 0, len); string result = System.Text.Encoding.GetEncoding("Shift_JIS").GetString(slice);
文字数vsバイト数の混乱
VB.net の Right / Mid / Left を C# に翻訳する完全早見表未収録#3a5a69353075
// ✅定石1: BackgroundWorkerでファイル取り込み using System.ComponentModel; public partial class ImportForm : Form {
定石1: BackgroundWorker —旧式だがDesigner配置できる
WinForms 非同期処理の正解 — BackgroundWorker / Task.Run / async-await の使い分け未収録#b0579a8291a4
// ✅定石2: Task.Run + Control.Invoke using System.Threading.Tasks; public partial class ImportForm : Form {
定石2: Task.Run + Control.Invokeでモダンに書く
WinForms 非同期処理の正解 — BackgroundWorker / Task.Run / async-await の使い分け未収録#e29c62a2a0b1
// ✅定石3: async-await + Task.Run(新規プロジェクトの本命) using System.Threading.Tasks; public partial class ImportForm : Form {
定石3: async-await + Task.Run —新規プロジェクトの本命
WinForms 非同期処理の正解 — BackgroundWorker / Task.Run / async-await の使い分け未収録#53f919be06e4
// ✅定石4: IProgress<T>で進捗報告(async-await版BackgroundWorker.ReportProgress) using System; using System.Threading.Tasks; public partial class ImportForm : Form
定石4: IProgressで進捗をUIに細かく反映
WinForms 非同期処理の正解 — BackgroundWorker / Task.Run / async-await の使い分け未収録#fa2904c0a651
// ✅定石5: CancellationTokenでキャンセル可能 using System.Threading; using System.Threading.Tasks; public partial class ImportForm : Form
定石5: CancellationTokenでキャンセル可能にする
WinForms 非同期処理の正解 — BackgroundWorker / Task.Run / async-await の使い分け未収録#298c9a3462f2
// ❌ NG: UIスレッドでWait()/ Resultを呼ぶとデッドロック private void btnStart_Click(object sender, EventArgs e) { var result = Task.Run(()=> DoHeavyWork()).Result; // ← UIスレッド固まる // ...
定石6: Wait()/ Resultでデッドロック—業務系の禁忌パターン
WinForms 非同期処理の正解 — BackgroundWorker / Task.Run / async-await の使い分け未収録#8f703fd10c73
// ✅定石1: BackgroundWorkerでファイル取り込み using System.ComponentModel; public partial class ImportForm : Form {
定石1: BackgroundWorker —旧式だがDesigner配置できる
WinForms 非同期処理の正解 — BackgroundWorker / Task.Run / async-await の使い分け未収録#df48c972d049
// ✅定石2: Task.Run + Control.Invoke using System.Threading.Tasks; public partial class ImportForm : Form {
定石2: Task.Run + Control.Invokeでモダンに書く
WinForms 非同期処理の正解 — BackgroundWorker / Task.Run / async-await の使い分け未収録#17558f5f8cdc
// ✅定石3: async-await + Task.Run(新規プロジェクトの本命) using System.Threading.Tasks; public partial class ImportForm : Form {
定石3: async-await + Task.Run —新規プロジェクトの本命
WinForms 非同期処理の正解 — BackgroundWorker / Task.Run / async-await の使い分け未収録#08f2e9eba268
// ✅定石4: IProgress<T>で進捗報告(async-await版BackgroundWorker.ReportProgress) using System; using System.Threading.Tasks; public partial class ImportForm : Form
定石4: IProgressで進捗をUIに細かく反映
WinForms 非同期処理の正解 — BackgroundWorker / Task.Run / async-await の使い分け未収録#8291000709ca
// ✅定石5: CancellationTokenでキャンセル可能 using System.Threading; using System.Threading.Tasks; public partial class ImportForm : Form
定石5: CancellationTokenでキャンセル可能にする
WinForms 非同期処理の正解 — BackgroundWorker / Task.Run / async-await の使い分け未収録#cdf2b4fdbd67
// ❌ NG: UIスレッドでWait()/ Resultを呼ぶとデッドロック private void btnStart_Click(object sender, EventArgs e) { var result = Task.Run(()=> DoHeavyWork()).Result; // ← UIスレッド固まる // ...
定石6: Wait()/ Resultでデッドロック—業務系の禁忌パターン
WinForms 非同期処理の正解 — BackgroundWorker / Task.Run / async-await の使い分け未収録#a9b2d6704a87
// WinForms: クリックは同一プロセス内で即ハンドラが呼ばれる private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex < 0) return; // ヘッダクリックは除外 var row = dataGridView1.Rows[e.RowIndex]; // 行はメモリ上にある
構造差1: イベントはサーバへ往復する
WinForms の DataGridView CellClick に慣れた業務SEが ASP.NET Razor の onclick で戸惑う3つの構造差未収録#69c5b317cca3
// PageModel: POST されて初めてサーバ側ハンドラが動く public class IndexModel : PageModel { public IActionResult OnPostSelect(int id) // 引数で行IDを受け取る {
構造差1: イベントはサーバへ往復する
WinForms の DataGridView CellClick に慣れた業務SEが ASP.NET Razor の onclick で戸惑う3つの構造差未収録#b5896e34500d
// 状態の持ち回り方(用途で使い分け) TempData["Message"] = msg; // 次の1リクエストだけ持たせる(PRG とセット) HttpContext.Session.SetInt32("SelectedId", id); // セッション中ずっと // または、毎回 DB / hidden から復元する(いちばん素直)
構造差2: ページは毎回作り直される
WinForms の DataGridView CellClick に慣れた業務SEが ASP.NET Razor の onclick で戸惑う3つの構造差未収録#88dea1d0cff9
// Index.cshtml.cs — ハンドラと状態の持ち回りだけの最小形 public class IndexModel : PageModel { public string? Message { get; private set; }
ミニマム検証 — 最小の Razor onclick を動かす
WinForms の DataGridView CellClick に慣れた業務SEが ASP.NET Razor の onclick で戸惑う3つの構造差未収録#d47e4fe2a234
// ✅定石1-a: DataTableをバインド(業務SE最頻) DataTable dt = LoadCustomerMaster(); // DataAdapterで取得済み combo.DisplayMember = "name"; //画面に出すカラム combo.ValueMember = "id"; //内部で扱うカラム combo.DataSource = dt;
定石1: DataSourceバインディング基本(DataTable / List /配列の3パターン)
WinForms ComboBox の DataSource バインディングと SelectedIndex / SelectedValue / SelectedItem の違い未収録#1175baf9dd62
// ❌ NG: DataSourceを先に設定するとDisplayMemberが効かないケース combo.DataSource = dt; // ←この時点で表示が"DataRowView"のToString()で固まる combo.DisplayMember = "name"; // ←後から設定しても効かないor微妙な挙動 combo.ValueMember = "id";
定石2: DisplayMember / ValueMemberの設定順序の罠
WinForms ComboBox の DataSource バインディングと SelectedIndex / SelectedValue / SelectedItem の違い未収録#0e43294379e4
// ✅定石3: Selected3兄弟の使い分け private void btnSubmit_Click(object sender, EventArgs e) { // 1. SelectedIndex:選択行番号(int、未選択は-1) int idx = combo.SelectedIndex;
定石3: Selected3兄弟(Index / Value / Item)の使い分け
WinForms ComboBox の DataSource バインディングと SelectedIndex / SelectedValue / SelectedItem の違い未収録#d784d45bf247
// ❌ NG: DataSource切り替え時に二重発火、本番更新が2回走る private void combo_SelectedIndexChanged(object sender, EventArgs e) { int customerId = (int)combo.SelectedValue; UpdateCustomerView(customerId); // ← DataSource切替時に複数回呼ばれる
定石4: SelectedIndexChanged二重発火の回避
WinForms ComboBox の DataSource バインディングと SelectedIndex / SelectedValue / SelectedItem の違い未収録#be8898e7aa37