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

この図鑑の使い方
言語で絞る
C# / SQL / TypeScript / PowerShell / Bash でフィルタ。
▶ で実行
事前収録の出力を 1 行ずつ再生。 ぱっと結果が見える。
記事と接続
各 snippet は出典記事へのリンク付き。 文脈ごと読める。
絞り込み
snippet 一覧
473 件// 開発時はこれで動いた var customers = db.Customers.ToList(); foreach (var c in customers) { // 顧客ごとに c.Orders を見る ← ここで1ループに1 SQL 飛ぶ Console.WriteLine($"{c.Name}: 注文 {c.Orders.Count()} 件");
▶ 実行可
なぜ「LINQ 書いたら SQL が爆発する」のか
EF6 + LINQ で N+1 問題を踏まない3つの書き方#044de404ad21
class Customer { public int Id; public string Name = ""; } class Order { public int Id; public int CustomerId; public int Amount; } var customers = new List<Customer> { new() { Id = 1, Name = "A社" },
▶ 実行可
パターン1: 罠 (Include 忘れ + foreach 内 navigation)
EF6 + LINQ で N+1 問題を踏まない3つの書き方#19cd61cdd189
// EF6 (.NET Fx 4.7.2)・これが本番で爆発するやつ using var db = new MyDbContext(); var customers = db.Customers.ToList(); // SQL #1: SELECT * FROM Customers foreach (var c in customers) { var count = c.Orders.Count(); // ループのたびに SQL 追加発行
▶ 実行可
パターン1: 罠 (Include 忘れ + foreach 内 navigation)
EF6 + LINQ で N+1 問題を踏まない3つの書き方#0cd0b26748ea
// EF6 (.NET Fx 4.7.2)・Include で関連を1クエリにまとめる using var db = new MyDbContext(); var customers = db.Customers .Include(c => c.Orders) // JOIN Orders を含める .ToList(); // SQL #1: SELECT ... FROM Customers c LEFT JOIN Orders o ...
▶ 実行可
パターン2: Include で eager loading (1クエリで関連ごと取得)
EF6 + LINQ で N+1 問題を踏まない3つの書き方#8a5aff026173
Console.WriteLine("[SQL #1] SELECT c.*, o.* FROM Customers c LEFT JOIN Orders o ON c.Id = o.CustomerId"); var customersWithOrders = customers .GroupJoin(orders, c => c.Id, o => o.CustomerId,
▶ 実行可
パターン2: Include で eager loading (1クエリで関連ごと取得)
EF6 + LINQ で N+1 問題を踏まない3つの書き方#a218fe1f714f
// EF6 (.NET Fx 4.7.2)・Select で必要な列だけ射影 using var db = new MyDbContext(); var summary = db.Customers .Select(c => new { c.Name,
▶ 実行可
パターン3: Select 射影で1クエリ集計 (画面に出す列だけ)
EF6 + LINQ で N+1 問題を踏まない3つの書き方#ea190218fcb0
Console.WriteLine("[SQL #1] SELECT c.Name, (SELECT COUNT(*) FROM Orders o WHERE o.CustomerId = c.Id) AS OrderCount, (SELECT ISNULL(SUM(o.Amount),0) FROM Orders o WHERE o.CustomerId = c.Id) AS TotalAmount FROM Customers c"); var summary = customers .Select(c => new { c.Name, OrderCount = orders.Count(o => o.CustomerId == c.Id),
▶ 実行可
パターン3: Select 射影で1クエリ集計 (画面に出す列だけ)
EF6 + LINQ で N+1 問題を踏まない3つの書き方#9ac91d59371f
// これが地雷 IQueryable<Order> recentOrders = db.Orders.Where(o => o.OrderDate > DateTime.Now.AddDays(-7)); var count = recentOrders.Count(); // SQL #1: SELECT COUNT(*) ... var first = recentOrders.FirstOrDefault(); // SQL #2: SELECT TOP(1) ...
▶ 実行可
ハマりポイント: LINQ 遅延実行と「複数列挙」の罠
EF6 + LINQ で N+1 問題を踏まない3つの書き方#a1cd6d0618df
for(int i = 0 ; i < 50; i++) { if(i % 5 == 0 && i % 3 == 0) Console.WriteLine("FizzBuzz")
コードをブログに張り付ける
エンジニアが技術ブログの書き方と書く目的を振り返る未収録#4f2dcaf56d42
namespace Linq { internal class Program { public static void Main(string[] args)
▶ 実行可
FizzBuzz1行のコード
FizzBuzz問題が1行で書けたのでその解説#93309a6c8c59
namespace IncludeStudy.Models { public class Company { public int Id { get; set; }
発端はModel参照がNullになっていたこと
Asp.Net Core ApiのIncludeの使い方で盛大な勘違いをしていた件未収録#b6a2ab2a378c
// GET: api/Companies/5 [HttpGet("{id}/emp")] public async Task<ActionResult<ICollection<Employee>>> GetCompanyEmp(int id) { var company = await _context.Company.FindAsync(id);
発端はModel参照がNullになっていたこと
Asp.Net Core ApiのIncludeの使い方で盛大な勘違いをしていた件未収録#64b70b0853f0
public class Todo { public int Id { get; set; } public string Sammary { get; set; } public string Detail { get; set; }
TodoMODELの構造
ASP.NETでCreate時にログイン中ユーザーのデータとして登録する方法未収録#38715cea3d9b
public class User { public int id { get; set; } public string UserName { get; set; } public string Password { get; set; }
UserModelの構造
ASP.NETでCreate時にログイン中ユーザーのデータとして登録する方法未収録#17084a70a2be
[HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "Id,Sammary,Detail,Limit,Done")] Todo todo) { var loginUser = GetLoginUser();
TodoModelがUserを保持している点に注目
ASP.NETでCreate時にログイン中ユーザーのデータとして登録する方法未収録#0c46100ec080
private User GetLoginUser() { return db.Users.FirstOrDefault(u => u.UserName == User.Identity.Name); }
TodoModelがUserを保持している点に注目
ASP.NETでCreate時にログイン中ユーザーのデータとして登録する方法未収録#31edbf235b99
namespace sqlserver_connection_demo.Models { public class User { public int ID { get; set; }
Modelを作る
【C#】Asp.net Core EFでSqlServerに対しマイグレーションをする方法未収録#89e3af841026
using Microsoft.EntityFrameworkCore; namespace sqlserver_connection_demo.Models { public class DemoContext : DbContext
Contextを作る
【C#】Asp.net Core EFでSqlServerに対しマイグレーションをする方法未収録#79dce8b7ef74
namespace sqlserver_connection_demo { public class Startup { public Startup(IConfiguration configuration)
Start.csを修正する
【C#】Asp.net Core EFでSqlServerに対しマイグレーションをする方法未収録#ec0b6d60debc
private SqlConnectionStringBuilder stringBuilder = new SqlConnectionStringBuilder() { InitialCatalog = "DemoDB", DataSource = "localhost", UserID = "sa",
Start.csを修正する
【C#】Asp.net Core EFでSqlServerに対しマイグレーションをする方法未収録#8e195404d5da
services.AddDbContext<DemoContext>(opt => { opt.UseSqlServer(stringBuilder.ToString()); });
Start.csを修正する
【C#】Asp.net Core EFでSqlServerに対しマイグレーションをする方法未収録#16ca3ab0fab2
private DataTable getDataTable() { var dt = new DataTable(); var idCol = dt.Columns.Add("ID"); var nameCol = dt.Columns.Add("氏名");
DataTableの定義
【C#】DataGridViewにDataTable反映したり変換して取得したりする未収録#a4a95e25ff1d
private void Form1_Load(object sender, EventArgs e) { dataGridView1.DataSource = getDataTable(); }
DataGridViewのDataSourceに反映させる
【C#】DataGridViewにDataTable反映したり変換して取得したりする未収録#90454beb1e12
private void Form1_Load(object sender, EventArgs e) { dataGridView1.DataSource = getDataTable(); // 列名を自由に変更する。
余談1:列名を変更したいならColumnNameのプロパティを触る
【C#】DataGridViewにDataTable反映したり変換して取得したりする未収録#e971cd5ead3c
public class User { public int ID { get; set; } public string Name { get; set; } public int Age { get; set; }
余談2:CustomClassもDataSourceにできます
【C#】DataGridViewにDataTable反映したり変換して取得したりする未収録#ab4b87efdb29
private IEnumerable<User> GetUsers() { var user1 = new User(1, "鈴木 おさむ",22, "東京都世田谷区"); var user2 = new User(2, "高橋 つよし",25, "東京都葛飾区");
余談2:CustomClassもDataSourceにできます
【C#】DataGridViewにDataTable反映したり変換して取得したりする未収録#5c9fd7e063bb
private void Form1_Load(object sender, EventArgs e) { //dataGridView1.DataSource = getDataTable(); //// 列名を自由に変更する。
余談2:CustomClassもDataSourceにできます
【C#】DataGridViewにDataTable反映したり変換して取得したりする未収録#9e611e145e57
private void button1_Click(object sender, EventArgs e) { var data = (DataTable)dataGridView1.DataSource; dataGridView2.DataSource = data; }
DataGridViewをDataTableに変換して取得するには?
【C#】DataGridViewにDataTable反映したり変換して取得したりする未収録#1d1e363b3ea6
private void button1_Click(object sender, EventArgs e) { var data = (DataTable)dataGridView1.DataSource; var newDt = data.Copy();
このままだと同じインスタンスになってるので、左右で同じ動きになってしまう。
【C#】DataGridViewにDataTable反映したり変換して取得したりする未収録#f5f19b5032c8
// ✅ C#側でループする(DataReader版) using (var conn = new SqlConnection(_connectionString)) using (var cmd = new SqlCommand("SELECT id, name FROM target_table WHERE status = 0", conn)) { conn.Open();
C#側との連携— DataReaderでクライアント側ループに寄せる選択肢
SQL Server のカーソルを使うべきタイミングと書き方(業務SE現場の判断軸)未収録#adcfd19ba723